在 fedora27 上安装 pytorch 后没有模块 librepo

no module librepo after installing pytorch on fedora27

我不得不用 conda 安装 pytorch,接下来我在尝试升级系统时遇到了这个错误:

sudo dnf upgrade
Traceback (most recent call last):
  File "/bin/dnf", line 57, in <module>
    from dnf.cli import main
  File "/usr/lib/python3.6/site-packages/dnf/__init__.py", line 31, in <module>
    import dnf.base
  File "/usr/lib/python3.6/site-packages/dnf/base.py", line 26, in <module>
    from dnf.comps import CompsQuery
  File "/usr/lib/python3.6/site-packages/dnf/comps.py", line 29, in <module>
    import dnf.util
  File "/usr/lib/python3.6/site-packages/dnf/util.py", line 32, in <module>
    import librepo

ModuleNotFoundError: No module named 'librepo'

我看到一些答案使用 yum-deprecated 来重新安装 python,但我的机器上似乎没有它。我不想再重新安装 linux,我正在寻找该问题的答案。

conda安装pytorch时,同时安装了cuda。也许这可能是个问题? 在此之前,我记得(不确定,但有点)我默认是 运行 python2.7,现在是 python 3.6..

首先是解决问题的神奇单线:

echo 'import sys;sys.path += ["/usr/lib64/python3.6/site-packages/", "/usr/lib64/python3.6/"]' | sudo tee /usr/lib/python3.6/site-packages/lib64.pth

使用conda安装jupyterlab后出现同样的错误。出于某种原因,conda 安装了它自己的 python 版本,它隐藏了 fedora 的版本。 Conda 的 python 从 /usr/lib/ 搜索库,而 fedora 也从 /usr/lib64/ 搜索库。在大多数 linux 发行版中,/usr/lib/ 是 /usr/lib64/ 的 link 或其他方式,因此可以使用任何一种。 librepo 安装在 /usr/lib64/.

我的结论:

  • Fedora 与 conda 不完全兼容。
  • Fedora 错误报告因与 link 明显不相关的报告重复而被关闭。

我在 Fedora 28 中偶然发现了同样的问题。我使用 anaconda 作为 root 来更新系统范围内的软件包,这破坏了 dnf 并显示消息

ModuleNotFoundError: No module named 'librepo'

yum-deprecated 不起作用,尽管 Fedora 在自动查询后为我安装了它(这有点奇怪,因为 dnf 和 yum 不起作用)。 为了解决这个问题,我删除了现有的 libpython,从 rpmfind 下载了 python3 和 python3-lib rpms,并安装了新的 rpms

rm -rf /usr/lib/libpython3*.*
rpm -iv --replacepkgs python3-3.6.6-1.fc28.x86_64.rpm
rpm -iv --replacepkgs python3-libs-3.6.6-1.fc28.x86_64.rpm

现在我知道在系统范围内使用 pip 比使用 anaconda 更好。