meh*_*ati 11 python travis-ci docker
我有一层为 docker 文件
RUN python setup.py develop
Run Code Online (Sandbox Code Playgroud)
我正在使用具有三个阶段的多阶段构建,这是所有阶段都具有相同基础映像的第一阶段,尽管我不认为这是 dockerfile 的问题,但似乎是 python 及其方式的问题在基本图像上执行python:3.7-slim
我正在 Travis CI 上构建这个 dockerfile,下面是 Travis 上的版本信息:
docker version
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:38 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:20 2017
OS/Arch: linux/amd64
Experimental: false
Run Code Online (Sandbox Code Playgroud)
我得到以下错误
AttributeError: 'ParsedRequirement' object has no attribute 'req'
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,我能够使用 docker 版本在我的 mac 机器上使用它19.03.2
这是我的setup.py文件
RUN python setup.py develop
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题。
meh*_*ati 19
我终于得到了修复 \o/
install_reqs = parse_requirements(requirements_path, session=False)
Run Code Online (Sandbox Code Playgroud)
起初,我通过简单地记录来检查 Travis 上的 install_reqs 是什么,发现它是 ParsedRequirement 对象的列表。我还发现这个类是在req_file.py. 我已经在 GitHub 上查看了req_file.py 此处的源代码。我发现没有调用这样的属性req,而是requirement. 所以有两个版本的parse_requirements函数,所以我使用 try 和 except 块来处理这个。
# Generator must be converted to list, or we will only have one chance to read each element, meaning that the first requirement will be skipped.
requirements = list(requirements)
try:
requirements = [str(ir.req) for ir in install_reqs]
except:
requirements = [str(ir.requirement) for ir in install_reqs]
Run Code Online (Sandbox Code Playgroud)
现在它与两个版本都兼容 \0/
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |