pip 10没有名为pip.req的模块

cod*_*fee 5 python pip

  1. 使用get-pip.py安装pip正在破坏.它说

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

  2. 没有名为pip.req的模块

安装pip模块时

Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    from pip.req import parse_requirements
ImportError: No module named pip.req
Run Code Online (Sandbox Code Playgroud)

cod*_*fee 11

安装

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

$ python get-pip.py --force-reinstall
Run Code Online (Sandbox Code Playgroud)

显然这是他们解决问题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
    }
)
Run Code Online (Sandbox Code Playgroud)

从pip进口 (BAD PRACTICE - 请勿使用,因为它可能随时中断!)

强烈建议您避免这种情况,因为如pip用户指南中所述,这些方法不是线程安全的.此外,因为他们是pip的私人方法,他们可以随时更改它,恕不另行通知,从而打破你的包安装!

如果您有任何从pip导入的内容,例如:

from pip.req import parse_requirements
Run Code Online (Sandbox Code Playgroud)

它会打破.因为现在这些已经转移到pip._internal:

from pip._internal.req import parse_requirements
Run Code Online (Sandbox Code Playgroud)

但实际上你必须使用这样的东西来实现向后兼容:

try: # for pip >= 10
    from pip._internal.req import parse_requirements
except ImportError: # for pip <= 9.0.3
    from pip.req import parse_requirements
Run Code Online (Sandbox Code Playgroud)

重要

现在说使用内部pip函数不是一个好习惯,因为这里提到了多种原因:https://pip.pypa.io/en/latest/user_guide/#using-pip-from-your-program