不小心删除了 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 已经太晚了,但这是为将来 运行 陷入这种不幸的人准备的。)
我做了一件很蠢的事。我正在将一些自己编写的包复制到 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 已经太晚了,但这是为将来 运行 陷入这种不幸的人准备的。)