今天使用Docker build 一个Python项目时,提示错误。查询相关资料,记录如下。
项目使用requirements.txt文件,放置环境依赖,但是使用会导致pip.req提示失败。尝试修改后成功。
结论:避免在requirements.txt文件中放置任何依赖项链接。而是使用下面提到的方法。您可以直接将依赖项链接放入setup.py文件中。
源码
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 
 | #from pip.req import parse_requirementsfrom pip._internal.req import parse_requirements
 
 install_reqs = parse_requirements('requirements.txt', session=False)
 install_requires = [str(ir.req) for ir in install_reqs]
 
 setup(name='chumpy',
 version=get_version(),
 packages = ['chumpy'],
 author='Matthew Loper',
 author_email='matt.loper@gmail.com',
 url='https://github.com/mattloper/chumpy',
 description='chumpy',
 license='MIT',
 install_requires=install_requires
 )
 
 | 
requirements.txt
| 12
 3
 
 | numpy>=1.8.1scipy>=0.13.0
 six>=1.11.0
 
 | 
提示错误信息
| 1
 | AttributeError: 'ParsedRequirement' object has no attribute 'req'
 | 
解决
| 12
 3
 4
 
 | Traceback (most recent call last):File "setup.py", line 5, in <module>
 from pip.req import parse_requirements
 ImportError: No module named pip.req
 
 | 
网上尝试
| 12
 3
 4
 
 | try: # for pip >= 10from pip._internal.req import parse_requirements
 except ImportError: # for pip <= 9.0.3
 from pip.req import parse_requirements
 
 | 
修改依然失败。
最终,直接修改setup()才能使用。
避免在requirements.txt文件中放置任何依赖项链接。而是使用下面提到的方法。您可以直接将依赖项链接放入setup.py文件中。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | setup(name='chumpy',version=get_version(),
 packages = ['chumpy'],
 author='Matthew Loper',
 author_email='matt.loper@gmail.com',
 url='https://github.com/mattloper/chumpy',
 description='chumpy',
 license='MIT',
 # install_requires=install_requires,
 install_requires=['numpy>=1.8.1', 'scipy>=0.13.0', 'six>=1.11.0'],
 )
 
 | 
参考文章
stackoverflow
install quantopian时出现No module named pip.req的解决办法
https://www.programcreek.com/python/example/58693/pip.req.parse_requirements