ModuleNotFoundError:运行yum或dnf时没有名为“ dnf”的模块

时间:2018-12-22 10:06:18

标签: python fedora yum dnf

几天前,我想运行dnf,但是收到以下错误消息

Traceback (most recent call last):
  File "/usr/bin/dnf", line 57, in <module>
    from dnf.cli import main
ModuleNotFoundError: No module named 'dnf'

因此,我尝试运行yum,并且收到类似的内容:

Traceback (most recent call last):
  File "/usr/bin/yum", line 57, in <module>
    from dnf.cli import main
ModuleNotFoundError: No module named 'dnf'

我不知道发生了什么,我希望有人可以帮助我找到问题并解决。我唯一知道的是,这可能与我使用conda在python中安装tensorflow之前的几天有关。尽管conda似乎现在无法正常工作,因为我得到了:

Traceback (most recent call last):
  File "/usr/bin/conda", line 6, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3126, in <module>
    @_call_aside
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3110, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 3139, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 581, in _build_master
    ws.require(__requires__)
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 898, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 784, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'conda==4.5.11' distribution was not found and is required by the application

我正在使用fedora 29 谢谢!

4 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,但经过反复尝试,唯一有效的方法是:

Environment variable WEBSITE_DNS_ not defined is received

这将宣布您的python3 rpm软件包。

我已经从网上搜索并下载了它

转到下载的目录,例如:

rpm -qa python3

我尝试了许多其他方法,因此这不是解决该问题的唯一因素。

答案 1 :(得分:1)

你好,

我刚刚在Fedora 31中进行了此操作,并且不完全知道是什么原因导致了同样的问题,它一定是某个软件包管理了另一个上下文,而这仅是我下一次使用DNF的需要。

我假设在出现上述错误之前:

Traceback (most recent call last):
  File "/usr/bin/dnf", line 57, in 
    from dnf.cli import main
ModuleNotFoundError: No module named 'dnf'

您在执行dnf时收到此消息:

/usr/local/lib/python3.7/site-packages/dnf.py:15: UserWarning: The DNF Python API is not currently available via PyPI.

Please install it with your distro package manager (typically called
'python2-dnf' or 'python3-dnf'), and ensure that any virtual environments
needing the API are configured to be able to see the system site packages
directory.

经过几个小时的研究,并尝试安装DNF rpm本身的每个DNF rpm依赖项(https://pkgs.org/download/dnf),我觉得很直觉,也许我应该尝试删除(mv确定)

/usr/local/lib/python3.7/

其中只有一个文件夹名为site-packages

成功了!

谢谢。

答案 2 :(得分:0)

我有一个遇到相同问题的朋友。

他试图通过一些惊人的cmd python3.7rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps在Linux服务器中卸载whereis python3 |xargs rm -frv
这导致yumdnf损坏。

我将/usr/bin/yum更改为使用本地python3.8版本,但最终导致ModuleNotFoundError: No module named 'dnf'并没有解决。

这不是在Internet上下载许多rpm软件包的好方法。而且我也不能使用yum。但是我有另一台相同的Linux OS服务器,因此我尝试复制有关python3.7的相关文件。

$ rpm -ql python3-3.7.0-9.h4.eulerosv2r8.aarch64> py.log
$ while read -r line;do dirname $line |xargs -I {} ssh root@$remoteip "mkdir -p {}" ;scp $line root@$remoteip:$line  ;done<py.log

$ rpm -ql python3-libs-3.7.0-9.h4.eulerosv2r8.aarch64 >pylib.log
$ while read -r line;do dirname $line |xargs -I {} ssh root@$remoteip "mkdir -p {}" ;scp $line root@$remoteip:$line  ;done<pylib.log

scp -r /usr/lib/python3.7/site-packages root@$remoteip:/usr/lib/python3.7/

我以这种方式恢复了yum

答案 3 :(得分:0)

我遇到了同样的问题。 对我来说,解决方案是简单地卸载我显然在某个时候安装的 python3 dnf 包(包括所有 virtualenvs)。

pip uninstall dnf