我做了一些非常愚蠢的事。我正在将一些自编写的包复制到python dist-packages文件夹,然后通过将cp
命令重写为rm
来决定再次删除其中一个。现在dist-packages文件夹已经消失了。现在我该怎么做?我可以从某个地方下载此文件夹的正常内容,还是需要完全重新安装python。如果是的话 - 有什么我需要注意的吗?
我删除的文件夹是/usr/local/lib/python2.7
,而不是由dpkg
和朋友维护的文件夹。
答案 0 :(得分:5)
我猜您使用的是基于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,以便将它们与分发软件包分开。
答案 1 :(得分:2)
您删除的目录由pip
控制和维护。如果您有使用pip
安装了哪些软件包的记录,则可以强制它再次重新安装。
如果没有,为时不能学习备份;但这不一定是一次尝试 - 重新安装你知道丢失的那些,然后忍受这样一个事实:你永远不会知道你是否因为忘记重新安装模块而得到错误,或者是因为某些事情您的代码有问题。你会发现一些你第一次没记得的错过的包裹;只是重新安装它们以及发现它们。
顺便说一下,使用virtualenv
听起来像是一个出色的解决方案,可以避免您需要使用系统Python安装的情况。
答案 2 :(得分:0)
您可以获得pip
和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
重新安装每个软件包。同样的事情发生在我身上,这个解决方案并未完全解决(由于某些原因某些软件包无法安装),但它可能对您有用,或者至少使您走上了正确的道路。 (我知道这篇文章太晚了,但这是给将来遇到这种不幸的人们的。)