我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
当前回答
我只是想删除由项目安装的包,而不是我已经安装的其他包(比如neovim, mypy和pudb,我用于本地开发,但不包括在应用程序要求中)。于是我做了:
Cat requirements.txt| sed 's/=。*//g' | xargs PIP卸载-y
这对我来说很有效。
其他回答
pip uninstall `pip freeze --user`
——user选项防止系统安装的包包含在清单中,从而避免/usr/lib和distutils权限错误。
我想把这个答案从评论区提升出来,因为它是线程中最优雅的解决方案之一。这个答案完全归功于@joeb。
pip uninstall -y -r <(pip freeze)
这对于我在virtualenv上下文之外清除我的用户包文件夹的用例非常有用,上面的许多答案都不能处理。
编辑:有人知道如何使这个命令在Makefile中工作吗?
额外好处:bash别名
为了方便起见,我把这个添加到我的bash配置文件中:
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
然后运行:
pipuninstallall
Pipenv的替代方案
如果你正在使用pipenv,你可以运行:
pipenv uninstall --all
诗歌的替代品
如果你正在使用诗歌,运行:
poetry env remove --python3.9
(请注意,您需要更改那里的版本号,以匹配您的Python版本。)
我只是想删除由项目安装的包,而不是我已经安装的其他包(比如neovim, mypy和pudb,我用于本地开发,但不包括在应用程序要求中)。于是我做了:
Cat requirements.txt| sed 's/=。*//g' | xargs PIP卸载-y
这对我来说很有效。
Pip无法知道它安装了哪些包,系统的包管理器安装了哪些包。为此,您需要这样做
对于基于rpm的发行版(将python2.7替换为安装PIP的python版本):
find /usr/lib/python2.7/ |while read f; do
if ! rpm -qf "$f" &> /dev/null; then
echo "$f"
fi
done |xargs rm -fr
对于基于deb的发行版:
find /usr/lib/python2.7/ |while read f; do
if ! dpkg-query -S "$f" &> /dev/null; then
echo "$f"
fi
done |xargs rm -fr
然后清理剩下的空目录:
find /usr/lib/python2.7 -type d -empty |xargs rm -fr
我发现上面的答案非常误导人,因为它会从你的发行版中删除所有(大部分?)python包,可能会给你留下一个坏掉的系统。
这是对我有用的命令:
pip list | awk '{print $1}' | xargs pip uninstall -y