我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。
有没有一种快速简单的方法来处理皮普?
当前回答
如果你正在使用pew,你可以使用wipeenv命令:
皮尤wipeenv[环境]
其他回答
仅使用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.
这是对我有用的命令:
pip list | awk '{print $1}' | xargs pip uninstall -y
就我而言,我意外地在macOS上使用homebrew安装的pip在全球范围内安装了许多软件包。恢复到默认包的最简单方法是:
$ brew reinstall python
或者,如果你使用pip3:
$ brew reinstall python3
这适用于最新版本。我认为这是最简洁明了的表达方式。
virtualenv --clear MYENV
但是为什么不直接删除并重新创建virtualenv呢?
不变性规则。此外,很难记住所有的管道和其他解决方案使用。
我找到了这个片段作为替代解决方案。这是一个比重做virtualenv更优雅的删除库:
pip freeze | xargs pip uninstall -y
如果你有通过VCS安装的包,你需要排除这些行并手动删除包(从下面的注释中提升):
pip freeze | grep -v "^-e" | xargs pip uninstall -y
如果你有直接从github/gitlab安装的包,这些包将有@。 如:
django @ git+https://github.com/django.git@<sha>
您可以添加cut -d "@" -f1来获得卸载所需的包名。
pip freeze | cut -d "@" -f1 | xargs pip uninstall -y