pip 10 没有找到 pip.req 模块。

8
  1. 使用 get-pip.py 安装 pip 时出现了问题。它显示:

    Requirement already up-to-date: pip in /tmp/tmpvF6RoH/pip.zip (10.0.0)

  2. 安装 pip 模块时报错,显示“没有名为 pip.req 的模块”

Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    from pip.req import parse_requirements
ImportError: No module named pip.req
1个回答

17

安装

使用 get-pip.py 进行安装时,请使用 --force-reinstall 标志:

$ python get-pip.py --force-reinstall

显然这是在他们修复问题之前。 https://github.com/pypa/pip/issues/5220


pip内部命令的推荐替代方案

避免在您的 requirements.txt 文件中放置任何依赖链接。 相反,使用下面提到的方法。 您可以直接在 setup.py 文件中放置依赖项链接。 一些著名包也将要求以列表的形式维护在 setup.py 文件中,而没有任何 requirements.txt 文件。

with open('requirements.txt') as f:
    install_requires = f.read().strip().split('\n')

setup(
    name='app_name',
    .
    .
    install_requires=install_requires,
    dependency_links=[
        'https://github.com/frappe/python-pdfkit.git#egg=pdfkit'
    ],
    cmdclass = \
    {
        'clean': CleanCommand
    }
)

使用pip导入的模块(不良做法-请勿使用)

强烈建议避免使用这种方式,因为正如pip用户指南中所提到的,这些方法不是线程安全的。另外,由于它们是pip的私有方法,因此可能随时更改而没有任何事先通知,从而破坏您的软件包安装!

如果您需要从pip导入任何模块,请注意:

from pip.req import parse_requirements

它会出现错误。因为现在已经将它们移动到 pip._internal 中,如下所示:

from pip._internal.req import parse_requirements

无论如何,为了向后兼容性,您仍需使用类似以下的代码:

try: # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError: # for pip <= 9.0.3
    from pip.req import parse_requirements

重要提示

虽然可以在程序中使用pip的内部函数,但由于多个原因不建议这样做,请参考此处提到的内容:https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program


你知道是否有推荐的替代方案,不使用内部API吗? - Joe J
@JoeJ 我已经相应地修改了答案,包括推荐的替代方案。 - codingCoffee
这是针对类似 https://github.com/pypa/pip/issues/7645 的问题的明智建议。 - Donal Lafferty

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