不小心删除了 dist-packages 文件夹,现在该怎么办?

Accidentally removed dist-packages folder, what to do now?

我做了一件很蠢的事。我正在将一些自己编写的包复制到 python dist-packages 文件夹,然后决定通过将 cp 命令重写为 rm 来再次删除其中一个。现在 dist-packages 文件夹不见了。现在我该怎么做?我可以从某个地方下载这个文件夹的正常内容,还是需要完全重新安装 python。如果是这样 - 有什么我需要注意的吗?

我删除的文件夹是 /usr/local/lib/python2.7,所以不是 dpkg 和朋友维护的文件夹。

我猜您使用的是基于 debian 的发行版(ubuntu 或类似发行版)。 如果是这样,您必须重新安装所有 python 软件包。 您应该可以通过致电获得其中的大部分 "automatically":

 sudo dpkg --get-selections | grep -E "^python" | grep install | cut -f1 | xargs apt-get --reinstall -y install

希望这对您有所帮助。 如果您想查看将重新安装哪些软件包,只需调用管道命令的第一部分:

sudo dpkg --get-selections | grep -E "^python"

最后你应该考虑使用 virtualenv 或 anaconda 而不是安装或复制你自己的包到 dist-packages。如果你不想这样,你可以将包复制到 site-packages 而不是 dist-packages 以将它们与分发包分开。

您删除的目录由pip控制和维护。如果你有记录你用pip安装了哪些包,你可以强制它重新安装它们。

如果没有,来不及学习备份;但这不一定是 one-shot 尝试——重新安装你知道丢失的那些,然后接受这样一个事实,即你永远不会知道你是否因为忘记重新安装模块而收到错误,或者因为你的代码有问题。渐渐地,您会发现更多丢失的包裹,这些包裹是您第一次忘记的;只需重新安装它们以及发现它们即可。

顺便说一句,使用 virtualenv 听起来像是一个更好的解决方案,可以避免您需要破坏系统 Python 安装的情况。

您可以使用 pip list 获取 pip 安装的软件包列表。然后你可以运行像

pip list | tail -n+3 | cut -d' ' -f1 | xargs sudo pip install --force-reinstall

哪里

  • pip list 给出已安装包的列表(在数据库中注册),
  • tail -n+3 跳过前两行输出,这只是一个标题,
  • cut -d' ' -f1 从每一行中删除包版本并且
  • xargs sudo pip install --force-reinstall 重新安装每个包。

同样的事情发生在我身上,这个解决方案并没有完全奏效(一些软件包由于某种原因无法安装)但它可能对你有用,或者至少让你走上了正确的道路。 (我意识到这 post 已经太晚了,但这是为将来 运行 陷入这种不幸的人准备的。)