PIP模块没有属性" main"

时间:2017-04-13 18:04:57

标签: python

编辑:有问题的计算机是一台客户端计算机,对可以安装的软件有限制。我不确定这可能是问题的原因,还是客户的IT部门给机器一个损坏的pip版本。下面推荐的答案可能会起作用但被公司的IT部门阻止,并且需要管理员登录才能完成。我已离开那个项目,并希望避免类似的情况。

我试图安装WHL文件

尝试运行时:

import pip
my_path = <a path to the WHL file>
pip.main(['install', my_path])

我收到了属性错误:

'module' object has no attribute 'main'

我跑了帮助(点子)和

__main__ 

被列为包裹内容。

我在控制台中运行Python 3.4。

5 个答案:

答案 0 :(得分:20)

他们进行了重构。你可以使用以下方法支持9点和10点:

try:
    from pip import main as pipmain
except:
    from pip._internal import main as pipmain

然后使用pipmain,因为你使用了pip.main。例如

pipmain(['install', "--upgrade", "pip"])
pipmain(['install', "-q", "package"])

答案 1 :(得分:13)

easy_install --upgrade pip为我工作。

答案 2 :(得分:8)

我的问题与我的IDE(PyCharm)有关。旧版本的PyCharm不支持​​pip v10。升级PyCharm为我解决了它。

答案 3 :(得分:0)

对于最新版本的pip(pip> = 10.0.0),其他答案中描述的功能将不再起作用。我建议将subprocesspip一起运行,如下所示:

import subprocess
import sys

my_path = <a path to the WHL file>
command_list = [sys.executable, "-m", "pip", "install", my_path]
with subprocess.Popen(command_list, stdout=subprocess.PIPE) as proc:
    print(proc.stdout.read())

此解决方案使用当前的python可执行文件将pip命令作为命令行命令运行。灵感来自here中提到的解决方案。

答案 4 :(得分:0)

从20.0.0点开始,是:

from pip._internal.cli.main import main as pipmain