使用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
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
| 归档时间: |
|
| 查看次数: |
6152 次 |
| 最近记录: |