今天使用Docker build 一个Python项目时,提示错误。查询相关资料,记录如下。
项目使用requirements.txt文件,放置环境依赖,但是使用会导致pip.req提示失败。尝试修改后成功。
结论:避免在requirements.txt文件中放置任何依赖项链接。而是使用下面提到的方法。您可以直接将依赖项链接放入setup.py文件中。
源码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #from pip.req import parse_requirements from 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
1 2 3
| numpy>=1.8.1 scipy>=0.13.0 six>=1.11.0
|
提示错误信息
1
| AttributeError: 'ParsedRequirement' object has no attribute 'req'
|
解决
1 2 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
|
网上尝试
1 2 3 4
| try: # for pip >= 10 from pip._internal.req import parse_requirements except ImportError: # for pip <= 9.0.3 from pip.req import parse_requirements
|
修改依然失败。
最终,直接修改setup()
才能使用。
避免在requirements.txt文件中放置任何依赖项链接。而是使用下面提到的方法。您可以直接将依赖项链接放入setup.py文件中。
1 2 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