由于错误,我使用pip在全局环境中安装了软件包。我想知道使用here提供的说明来卸载OS上已经存在的Python,然后使用over here提供的说明使用homebrew重新安装它是个好主意吗?或者有什么办法摆脱我使用pip安装的所有软件包及其依赖项。
我在macOS High Sierra上使用Python 2.7.10。 编辑:建议方法的问题:
根据CloC在评论部分的建议,我尝试通过键入
从全局环境中卸载所有软件包。pip freeze > to_delete.txt
然后
sudo -H pip uninstall -y -r to_delete.txt
但是我在终端中遇到以下错误:
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/pip/_internal/basecommand.py", line 141, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/pip/_internal/commands/uninstall.py", line 74, in run
auto_confirm=options.yes, verbose=self.verbosity > 0,
File "/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/pip/_internal/req/req_install.py", line 864, in uninstall
uninstalled_pathset.remove(auto_confirm, verbose)
File "/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/pip/_internal/req/req_uninstall.py", line 221, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-18.0-py2.7.egg/pip/_internal/utils/misc.py", line 276, in renames
shutil.move(old, new)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 299, in move
copytree(src, real_dst, symlinks=True)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 208, in copytree
raise Error, errors
Error: [('/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/macholib/dyld.py', '/private/tmp/pip-uninstall-3QWFII/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/macholib/dyld.py', "[Errno 1] Operation not permitted: '/private/tmp/pip-uninstall-3QWFII/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/macholib/dyld.py'"), [...], "[Errno 1] Operation not permitted: '/private/tmp/pip-uninstall-3QWFII/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/macholib'")]
答案 0 :(得分:2)
您当然不应该重新安装python才能进行全新的软件包安装。
您可以通过首先列出并卸载它们来轻松地从全局环境中卸载所有软件包:
pip freeze > to_delete.txt
然后:
pip uninstall -y -r to_delete.txt
如果不想全部卸载,则可以删除要保留在第一步中创建的to_delete.txt
文件中的行。
答案 1 :(得分:1)
我知道我的回答晚了,但它可能对某人有所帮助。
Windows 环境:
pip freeze > unins && pip uninstall -y -r unins && del unins
Linux 环境:
pip freeze > unins && pip uninstall -y -r unins && rm unins
使用上述命令,您可以删除您使用 pip
命令安装的所有软件包。
答案 2 :(得分:0)
有什么方法可以摆脱我使用pip安装的所有软件包及其依赖性。
如果要使用--user
选项安装软件包,则解决方案很简单:列出所有用户安装的软件包并批量卸载:
$ pip list --format=freeze | xargs pip uninstall -y
但是,由于您已经在系统范围内安装了软件包(使用sudo
),因此该命令有些麻烦。 MacOS将某些软件包作为系统的一部分提供;它们位于/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
下。您既不能卸载这些软件包,也不能在系统目录中安装其他软件包。您通过sudo pip install
安装的每个软件包都位于/Library/Python/2.7/site-packages
下,以确保未修改或删除OS文件。因此,解决方案是:
pip
可定位的所有软件包/Library/Python/2.7/site-packages
下的内容 bash
中的示例:
$ pip list --format=freeze | cut -d= -f1 | \
xargs -I {} bash -c 'pip show {} | ( grep -q "Location: /Library/Python/2.7/site-packages" && echo {} )' | \
xargs pip uninstall -y
这将卸载未预装MacOS的所有系统软件包!如果您在系统范围内安装了pip
本身,例如通过sudo easy_install pip
。另外,可能还有其他工具安装的软件包,例如Virtualbox在名为vboxapi
的软件包中安装python绑定-这也将被卸载。最好列出软件包名称:
$ pip list --format=freeze | cut -d= -f1 | \
xargs -I {} bash -c 'pip show {} | ( grep -q "Location: /Library/Python/2.7/site-packages" && echo {} )'
分析结果并在单独的命令中卸载选定的软件包。