我正在摆弄Fedora,试图卸载一个python模块。我找不到那个我正在寻找的那个,所以半个linux-primate大脑想到了一个想法,来执行它。
sudo rm -rf /usr/lib/python3.5/site-packages/
它做到了,只有在那之后我意识到我是多么愚蠢。 DNF和YUM取决于它,每当我执行DNF时,我都会
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
ImportError: No module named 'dnf'
当我执行YUM时
Redirecting to '/usr/bin/dnf ' (see 'man yum2dnf')
Traceback (most recent call last):
File "/usr/bin/dnf", line 57, in <module>
from dnf.cli import main
ImportError: No module named 'dnf'
唯一可行的是yum-deprecated
。其他一切都处于动荡之中。
那么我该如何解决这个问题呢?
答案 0 :(得分:4)
清除Python3的Site-Packages目录会删除Fedora需要正常运行的许多库。这意味着dnf
和yum
等工具无效。
这些是我为解决这个问题而采取的步骤。
第1步:安装yum-deprecated
。只需在终端上键入yum-deprecated,它就会询问您是否要安装它。输入y
即可安装。
第2步:运行此Bash命令
rpm -qa | egrep "^python3" | sed ':a;N;$!ba;s/\n/ /g' | xargs sudo yum-deprecated reinstall -y
这将找到Installed python 3软件包的所有名称,然后重新安装它们。
自己注意:永远不要再运行像sudo rm -rf /usr/lib/python3.5/site-packages/
这样的命令了。
答案 1 :(得分:2)
使用'rpm -Va'识别丢失文件的包。然后,您必须从Fedora镜像下载匹配的RPM文件,然后使用rpm --reinstall
来修复这些文件。
更高级别的dnf和yum软件包依赖于Python,所以它们很可能会被破坏。幸运的是,较低级别的rpm命令没有,所以如果你已经删除了所有python包,这应该会让你恢复状态。
答案 2 :(得分:1)
你基本上删除了很多python文件。系统的很大一部分依赖于python,包括dnf
本身,它是用python编写的。
最好的办法是备份所有文件并重新安装系统。如果yum-deprecated
仍然有效,您可能会有幸重新安装dnf
:
yum-deprecated reinstall "dnf*"
但很可能你需要更多的包来完成相同的程序。
答案 3 :(得分:0)
我有一个遇到相同问题的朋友。
他尝试通过一些惊人的cmd rpm -qa|grep python3|xargs rpm -ev --allmatches --nodeps
和 whereis python3 |xargs rm -frv
来卸载linux服务器中的python3.7。
这会导致yum
和dnf
损坏。
由于找不到yum-deprecated
,因此有以下尝试。
我将/usr/bin/yum
更改为使用本地python3.8版本,但最终导致ModuleNotFoundError: No module named 'dnf'
并没有解决。
这不是在互联网上下载许多rpm软件包的好方法。而且我也不能使用yum。但是我有另一个相同的os linux服务器,因此我尝试复制有关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
。