使用get-pip.py安装pip正在破坏。它说
Requirement already up-to-date: pip in /tmp/tmpvF6RoH/pip.zip (10.0.0)
没有名为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
答案 0 :(得分:10)
<强>安装强>
使用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