我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
当前回答
我只是想删除由项目安装的包,而不是我已经安装的其他包(比如neovim, mypy和pudb,我用于本地开发,但不包括在应用程序要求中)。于是我做了:
Cat requirements.txt| sed 's/=。*//g' | xargs PIP卸载-y
这对我来说很有效。
其他回答
我知道这是一个老问题,但我确实偶然发现了它,所以作为将来的参考,你现在可以这样做:
pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
-r,——需求文件 卸载给定需求文件中列出的所有包。此选项可多次使用。
来自PIP文档8.1版
我做到了以下几点:
用当前安装的包列表创建名为reqs.txt的需求文件
pip freeze > reqs.txt
然后卸载reqs.txt中的所有包
# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt
我喜欢这种方法,因为如果你犯了错误,你总是有一个pip需求文件可以依靠。它也是可重复的,而且是跨平台的(Windows、Linux、MacOs)。
这在Windows上很管用:
pip uninstall -y (pip freeze)
仅使用pip的跨平台支持:
#!/usr/bin/env python
from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions
pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
package.project_name
for package in
get_installed_distributions()
if not package.location.endswith('dist-packages')
])
options.yes = True # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction
try:
print pip_uninstall.run(options, args)
except OSError as e:
if e.errno != 13:
raise e
print >> stderr, "You lack permissions to uninstall this package.
Perhaps run with sudo? Exiting."
exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.
在Windows上,如果你的路径配置正确,你可以使用:
pip freeze > unins && pip uninstall -y -r unins && del unins
对于类unix系统应该是类似的情况:
pip freeze > unins && pip uninstall -y -r unins && rm unins
只是一个警告,这不是完全可靠的,因为你可能会遇到诸如“文件未找到”等问题,但它可能在某些情况下仍然有效
编辑:为清晰起见:unins是一个任意文件,当该命令执行时,该文件中写入了数据
然后,它编写的文件被用于通过pip uninstall -y -r unins在隐含同意/事先批准的情况下卸载上述软件包
文件最终在完成时被删除。