从Python模块中卸载并重新安装pip软件包

8
我使用以下pip函数从Python中卸载了“setuptools”软件包。
import pip
pip.main(['uninstall','--yes','setuptools'])

当我尝试使用以下命令重新安装相同的软件包时,它会抛出以下错误信息:
pip.main(['install','setuptools'])

错误:

Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\\python27\\lib\\site-packages

有没有解决这个问题的选项?谢谢您的提前帮助 :)
2个回答

7

是的,使用--ignore-installed参数。更多信息请参考:pip install --help,其中有详细说明:

-U, --upgrade               Upgrade all specified packages to the newest
                            available version. This process is recursive
                            regardless of whether a dependency is already
                            satisfied.
--force-reinstall           When upgrading, reinstall all packages even if
                            they are already up-to-date.
-I, --ignore-installed      Ignore the installed packages (reinstalling
                            instead).

此外,我已经尝试过Python 3.4。在上述选项中,只有pip install --ignore-installed会安装先前安装的包。

我似乎部分卸载了pip,因为pip未被识别为命令,我无法运行python -m pip "whatever"。执行python get-pip.py并不能解决任何问题。但是python get-pip.py --force-reinstall可以。非常感谢。 - Romain Vincent

2

卸载操作不会立即生效,需要下一次启动Python才能看到结果。因此,如果您想要卸载并重新安装,可以将代码分成两个文件。

文件 "main.py":

import pip
import os

pip.main(['uninstall','--yes','setuptools'])
os.system('python install_setuptools.py')

文件 "install_setuptools.py":

import pip

pip.main(['install','setuptools'])

1
确实,在下一次Python重启之前,它不会生效。但是为什么呢?是否有可能在同一个解释器中解决这个问题? - ankostis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接