pol*_*oig 6 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'
Run Code Online (Sandbox Code Playgroud)
因此我尝试运行 yum 并收到类似的信息:
Traceback (most recent call last):
File "/usr/bin/yum", line 57, in <module>
from dnf.cli import main
ModuleNotFoundError: No module named 'dnf'
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么,我希望有人能帮助我找到问题并解决它。我唯一知道的是,这可能与前几天我使用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
Run Code Online (Sandbox Code Playgroud)
我正在使用 fedora 29 谢谢!
小智 6
我遇到了同样的问题,但经过反复试验,唯一真正有效的是:
rpm -qa python3
Run Code Online (Sandbox Code Playgroud)
这将公布您的 python3 rpm 包。
我从网上搜索并下载了它
转到下载的目录,例如:
sudo rpm -e --nodeps python3-3.7.2-4.fc29.x86_64(my python3 rpm package)
sudo rpm -i python3-3.7.2-4.fc29.x86_64.rpm
Run Code Online (Sandbox Code Playgroud)
我尝试了许多其他方法,因此这不是解决该问题的唯一因素。
从软件包安装 Python 3.11 时,我在 Rocky Linux 9 Docker 映像(预装了 Python 3.9)上遇到了类似的问题。
dnf install python3.11
Run Code Online (Sandbox Code Playgroud)
python3.11可执行文件工作正常,但是在设置符号链接时python3.11 -> python3
$ ls -l /usr/bin/pyth*
lrwxrwxrwx 1 root root 16 Sep 19 12:53 /usr/bin/python -> /usr/bin/python3
lrwxrwxrwx 1 root root 19 Sep 19 12:53 /usr/bin/python3 -> /usr/bin/python3.11
-rwxr-xr-x 1 root root 15448 Jun 23 06:04 /usr/bin/python3.11
-rwxr-xr-x 1 root root 15440 Apr 17 23:46 /usr/bin/python3.9
Run Code Online (Sandbox Code Playgroud)
dnf 停止工作并出现ModuleNotFoundError: No module named 'dnf'错误,因为它的 Python 模块安装在/usr/lib/python3.9/site-packages/dnf目录中。
解决方案:对我来说,帮助将Python 脚本#!/usr/bin/python3中的默认 shebang替换/usr/bin/dnf为特定的 shebang #!/usr/bin/python3.9:
sed -i 's|#!/usr/bin/python3|#!/usr/bin/python3.9|g' /usr/bin/dnf
Run Code Online (Sandbox Code Playgroud)
然后与
$ head -1 /usr/bin/dnf
#!/usr/bin/python3.9
Run Code Online (Sandbox Code Playgroud)
它工作正常:
$ dnf --version
4.14.0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31931 次 |
| 最近记录: |