没有名为“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版本: Python 3.10.12

卡哈需要: Python 3.8+

我怎样才能解决这个问题?

答案1

问题

您安装了相同库的多个版本。首选安装程序(又名pip)已尝试安装它自己的 版本xdg,但无法安装,因为apt它已正确干预并建议您 Ubuntu 拥有自己的一组全局可用库。 实际上/usr/lib/python-3/dist-packages (0.27)/ ,您现在有两个相互竞争的包管理器,并且包管理器试图安装相同的库。发生这种情况时,需要这些库的应用程序会感到困惑,因为它们试图寻找与已安装的库相反的库。

为了解决这个问题,我们需要卸载一切如果需要,修复apt pip,通过 apt 安装多个 Python 版本,然后在它自己的环境中正确重新安装 pip,pipenv并在该环境中正确安装pip软件包。

使固定

因此,如果我们将我的修复列表分成可管理的部分,那就是:

  1. pip连同其所有软件包一起卸载。
  2. 对它和操作系统进行健全性检查apt并修复,以防pip安装的任何东西损坏了某些东西。
    • 检查 Ubuntu 存储库是否有我们删除时卸载的任何软件包pip
    • 如果我们发现任何软件包,请安装软件包
  3. 执行Python的版本检查,并使用正确添加3.x版本死蛇 PPA
    • 通知操作系统我们想要使用新的 3.x 版本的 Pythonupdate-alternatives
  4. pip从 正确安装apt
  5. 创建一个单独的环境,pipenv以便 APT 安装的 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. 创建一个 pythonvirtualenv以将安装的 python 包和 python 库pip与主机操作系统上安装的 python 库和 python 包分开。请参阅Python 用户手册:venv 笔记: venv 需要 >=Python 3.3

边注

我相信您尝试使用的大多数软件包都khal可以通过以下方式获得,apt这意味着它们将通过操作系统安装的 python 进行管理和使用。使用apt search来找到他们

相关内容