'xdg.BaseDirectory'라는 모듈이 없습니다.

'xdg.BaseDirectory'라는 모듈이 없습니다.

syncal pip3 install 'syncall[caldav, tw]' khal을 설치한 후 더 이상 작동하지 않습니다. 에러 메시지:

yoga-x1:~$ **khal**
Traceback (most recent call last):
  File "/usr/bin/khal", line 2, in <module>
    from khal.cli import main_khal
  File "/usr/lib/python3/dist-packages/khal/cli.py", line 35, in <module>
    from .settings import InvalidSettingsError, get_config
  File "/usr/lib/python3/dist-packages/khal/settings/__init__.py", line 1, in <module>
    from .settings import get_config  # noqa
  File "/usr/lib/python3/dist-packages/khal/settings/settings.py", line 26, in <module>
    import xdg.BaseDirectory
ModuleNotFoundError: No module named 'xdg.BaseDirectory'

현재 Python 버전: 파이썬 3.10.12

Kaja에는 다음이 필요합니다. 파이썬 3.8+

이 문제를 어떻게 해결할 수 있나요?

답변1

질문

동일한 라이브러리의 여러 버전이 설치되어 있습니다. 기본 설치 프로그램(일명 pip)은 자체 버전을 설치하려고 시도했지만 올바르게 개입하여 Ubuntu에 전 세계적으로 사용 가능한 자체 라이브러리 세트가 있다고 제안했기 때문에 xdg실패했습니다 . apt사실상 /usr/lib/python-3/dist-packages (0.27)/ 이제 두 개의 경쟁 패키지 관리자가 있고 패키지 관리자는 동일한 라이브러리를 설치하려고 합니다. 이런 일이 발생하면 이러한 라이브러리가 필요한 응용 프로그램은 이미 설치된 라이브러리가 아닌 라이브러리를 찾으려고 하기 때문에 혼란스러워집니다.

이 문제를 해결하려면 제거해야 합니다.모든 것필요한 경우 apt를 수정하고 pipapt를 통해 여러 Python 버전을 설치한 다음 자체 환경에 pip를 올바르게 다시 설치하고 pipenv해당 환경에 패키지를 올바르게 설치합니다 pip.

고정시키다

따라서 수정 사항 목록을 관리 가능한 부분으로 나누면 다음과 같습니다.

  1. pip모든 패키지와 함께 제거합니다.
  2. 운영체제와 운영체제를 제대로 확인 하고 설치한 것이 무엇이든 문제 apt가 있는 경우를 대비해 수정하세요 .pip
    • 제거할 때 제거한 패키지가 있는지 Ubuntu 저장소를 확인하십시오.pip
    • 패키지를 찾으면 해당 패키지를 설치하세요.
  3. Python의 버전 확인을 수행하고 다음을 사용하여 3.x 버전을 올바르게 추가하십시오.데드 스네이크 PPA
    • 새로운 3.x 버전의 Python을 사용하고 싶다고 운영 체제에 알립니다.update-alternatives
  4. pip올바른 설치에서 apt.
  5. pipenvAPT가 설치된 Python 버전의 라이브러리가 PIP가 설치된 버전과 "충돌"하지 않도록 별도의 환경을 만듭니다 .

포함 명령 수정

이것이 귀하의 문제에 대한 나의 해결책입니다. 아마도 더 간단한 방법이 있을 것입니다. 그러나 저는 이미 완료된 작업을 되돌리는 것을 선호하므로 처음부터 시작하여 거기서부터 작업합니다.

  1. 설치된 모든 패키지 제거 pip: 원하는 제거 방법을 선택하십시오.pip로 설치된 모든 패키지를 제거하는 방법은 무엇입니까?또는Pip을 사용하여 모든 Python 패키지를 한 번에 제거하는 방법은 무엇입니까?.
  2. APT가 모니터링하는 패키지도 제거했을 수 있으므로 다시 설치해야 하는지 살펴보겠습니다.sudo apt update --fix-missing

노트: 우리는 결과가 전혀 반환되지 않기를 원합니다. 이 명령은 저장소 업데이트를 수행하고 손상된 부분을 건너뜁니다 **

  1. 위 명령이 일반 업데이트 출력이 아닌 목록을 반환하는 경우 문제는 다음과 같습니다 sudo apt install -f.

노트: 패키지 이름 없이 -f를 사용하면 시스템에 설치된 모든 패키지를 검색하여 손상되거나 제거된 항목을 수정하는 설치 옵션을 해결하려고 합니다.

  1. 다음 명령을 사용하여 이전에 연결된 Deadsnakes PPA를 추가합니다.sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update

노트: 이번 단계는임의로 선택할 수 있는하지만 추천합니다.

  1. 설치된 Python 패키지 및 Python 라이브러리를 호스트 운영 체제에 설치된 virtualenv패키지 및 Python 라이브러리와 분리하려면 Python을 만듭니다 . pip보다Python 사용자 매뉴얼: venv 노트: venv에는 >=Python 3.3이 필요합니다.

사이드 노트

나는 당신이 사용하려는 대부분의 패키지가 khal이런 방식으로 사용 가능하다고 믿습니다. 즉, apt운영 체제에 설치된 Python을 통해 패키지가 관리되고 사용된다는 의미입니다. apt search찾는 데 사용하세요 .

관련 정보