3

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

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

4

3 回答 3

8

我猜你正在使用基于 debian 的发行版(ubuntu 或类似的)。如果是这样,您必须重新安装所有 python 包。您应该能够通过调用“自动”获得其中的大部分:

 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 以将它们与分发包分开。

于 2016-01-12T10:38:07.913 回答
2

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

如果没有,学习备份就太晚了;但这不一定是一次性尝试——重新安装您知道丢失的那些,然后忍受这样一个事实,即您永远不会知道是否因为忘记重新安装模块或某些原因而出现错误你的代码有问题。渐渐地,你会发现一些你第一次忘记的丢失的包;只需在您发现它们时重新安装它们。

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

于 2016-01-12T12:00:20.207 回答
0

pip您可以通过with获取安装的软件包列表pip list。然后你可以运行类似的东西

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重新安装每个软件包。

同样的事情发生在我身上,这个解决方案并没有完全奏效(某些软件包由于某种原因无法安装)但它可能对你有用,或者至少让你走上正确的道路。(我意识到这篇文章太晚了,但这是给未来遇到这种不幸的人的。)

于 2020-11-15T21:37:54.063 回答