清除usr / lib / python3.5 / site-packages /

时间:2017-02-17 16:50:47

标签: python bash pip fedora

我正在摆弄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。其他一切都处于动荡之中。

那么我该如何解决这个问题呢?

4 个答案:

答案 0 :(得分:4)

清除Python3的Site-Packages目录会删除Fedora需要正常运行的许多库。这意味着dnfyum等工具无效。

这些是我为解决这个问题而采取的步骤。

第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。
这会导致yumdnf损坏。

由于找不到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