pip 升级到 10 之后报错,求助如何解决?

Traceback (most recent call last): File "C:\Program Files\JetBrains\PyCharm 2017.3\helpers\packaging_tool.py", line 192, in main retcode = do_install(pkgs) File "C:\Program Files\JetBrains\PyCharm 2017.3\helpers\packaging_tool.py", line 109, in do_install return pip.main(['install'] + pkgs) AttributeError: module 'pip' has no attribute 'main'

我找了好多办法都没有用,求助


pip 升级到 10 之后报错,求助如何解决?

10 回复

我也是…


pip 10 把 pip.main() 给挪窝了,直接调用会报 AttributeError。你得改用 sys.executable 来调子进程,或者用新的 pip._internal 模块。

方案一(推荐):用 subprocess 调用 pip 这是现在官方推荐的做法,稳定可靠。

import subprocess
import sys

# 安装包
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'package_name'])

# 升级包
subprocess.check_call([sys.executable, '-m', 'pip', 'install', '--upgrade', 'package_name'])

# 获取已安装包列表
result = subprocess.run([sys.executable, '-m', 'pip', 'list'], capture_output=True, text=True)
print(result.stdout)

方案二:用 pip._internal(不保证向后兼容) 如果非要用编程方式调用,可以这么干,但注意这属于内部 API,可能会变。

from pip._internal import main as pip_main

# 注意:参数要传列表,跟命令行一样
pip_main(['install', 'package_name'])

如果还在用老代码的紧急修复 临时改一下导入路径也能跑,但尽快换成方案一才是正事。

import pip
# 临时兼容性补丁
if hasattr(pip, '_internal'):
    pip.main = pip._internal.main

总结:用 subprocess 调 pip 最靠谱。

兄弟我更新了 pycharm 就 ok 了

我也是,import requests 库升级后报错

卸载后,用 get-pip.py 安装成功。

我也是 只能别扭着用 python3 -m pip 先凑合着…

pip10 似乎移动了一些东西,在 changelog 也没说明

我也遇到了这个问题

回到顶部