docker构建完全相同的requirements.txt和Dockerfile,4周前成功,但目前失败[重复]

问题描述 投票:0回答:3

重现故障的步骤。

Docker 版本 24.0.2

容器 3.10.9 中的 Python 版本请参阅基础镜像

  1. 需求.txt
pycurl==7.45.1
delta==0.4.2
fiftyone==0.21.0
filetype==1.2.0
Flask==2.2.2
kfp==1.8.19
kfp_pipeline_spec==0.1.16
numpy==1.23.5
pandas==1.5.2
Pillow==9.4.0
pyspark==3.3.2
requests==2.28.1
shortuuid==1.0.11
ultralytics==8.0.109
cvat_sdk==2.4.4
onnxruntime==1.14.1

PyJWT==2.7.0
bcrypt==4.0.1
email-validator==2.0.0.post2
decorator==5.1.1
Flask-Admin==1.5.8
Flask-CAS==1.0.2
Flask-Cors==3.0.10
Flask-JWT-Extended==4.4.4
Flask-Login==0.6.2
flask-mongoengine==1.0.0
Flask-Principal==0.4.0
Flask-PyMongo==2.3.0
Flask-RESTful==0.3.9
Flask-SQLAlchemy==3.0.3
Flask-WTF==1.1.1
SQLAlchemy==1.4.48
SQLAlchemy-Utils==0.41.1
Jinja2==3.0.3

  1. Dockerfile
FROM pytorch/pytorch:2.0.0-cuda11.7-cudnn8-runtime

RUN apt-get update && apt-get install -y curl libcurl4-openssl-dev libssl-dev git gcc ffmpeg libsm6 libxext6 libgl1-mesa-glx wget -y && rm -rf /var/lib/apt/lists/*

RUN mkdir /app
WORKDIR /app

COPY . /app

RUN pip install pip --upgrade && pip install -r requirements.txt
  1. 命令

    docker build -t env_test .

  2. 错误信息

#0 33.30 Collecting PyYAML (from fiftyone==0.21.0->-r requirements.txt (line 3))
#0 33.31   Downloading PyYAML-5.4.1.tar.gz (175 kB)
#0 33.33      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 175.1/175.1 kB 15.4 MB/s eta 0:00:00
#0 33.49   Installing build dependencies: started
#0 36.84   Installing build dependencies: finished with status 'done'
#0 36.84   Getting requirements to build wheel: started
#0 37.05   Getting requirements to build wheel: finished with status 'error'
#0 37.06   error: subprocess-exited-with-error
#0 37.06
#0 37.06   × Getting requirements to build wheel did not run successfully.
#0 37.06   │ exit code: 1
#0 37.06   ╰─> [62 lines of output]
#0 37.06       /tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/config/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`
#0 37.06       !!
#0 37.06
#0 37.06               ********************************************************************************
#0 37.06               The license_file parameter is deprecated, use license_files instead.
#0 37.06
#0 37.06               By 2023-Oct-30, you need to update your project and remove deprecated calls
#0 37.06               or your builds will no longer be supported.
#0 37.06
#0 37.06               See https://setuptools.pypa.io/en/latest/userguide/declarative_config.html for details.
#0 37.06               ********************************************************************************
#0 37.06
#0 37.06       !!
#0 37.06         parsed = self.parsers.get(option_name, lambda x: x)(value)
#0 37.06       running egg_info
#0 37.06       writing lib3/PyYAML.egg-info/PKG-INFO
#0 37.06       writing dependency_links to lib3/PyYAML.egg-info/dependency_links.txt
#0 37.06       writing top-level names to lib3/PyYAML.egg-info/top_level.txt
#0 37.06       Traceback (most recent call last):
#0 37.06         File "/opt/conda/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
#0 37.06           main()
#0 37.06         File "/opt/conda/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
#0 37.06           json_out['return_val'] = hook(**hook_input['kwargs'])
#0 37.06         File "/opt/conda/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
#0 37.06           return hook(config_settings)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 341, in get_requires_for_build_wheel
#0 37.06           return self._get_build_requires(config_settings, requirements=['wheel'])
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 323, in _get_build_requires
#0 37.06           self.run_setup()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 338, in run_setup
#0 37.06           exec(code, locals())
#0 37.06         File "<string>", line 271, in <module>
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 107, in setup
#0 37.06           return distutils.core.setup(**attrs)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 185, in setup
#0 37.06           return run_commands(dist)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
#0 37.06           dist.run_commands()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 969, in run_commands
#0 37.06           self.run_command(cmd)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 1234, in run_command
#0 37.06           super().run_command(command)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 988, in run_command
#0 37.06           cmd_obj.run()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 314, in run
#0 37.06           self.find_sources()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 322, in find_sources
#0 37.06           mm.run()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 551, in run
#0 37.06           self.add_defaults()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/command/egg_info.py", line 589, in add_defaults
#0 37.06           sdist.add_defaults(self)
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/command/sdist.py", line 104, in add_defaults
#0 37.06           super().add_defaults()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 251, in add_defaults
#0 37.06           self._add_defaults_ext()
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py", line 336, in _add_defaults_ext
#0 37.06           self.filelist.extend(build_ext.get_source_files())
#0 37.06         File "<string>", line 201, in get_source_files
#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
#0 37.06           raise AttributeError(attr)
#0 37.06       AttributeError: cython_sources
#0 37.06       [end of output]
#0 37.06
#0 37.06   note: This error originates from a subprocess, and is likely not a problem with pip.
#0 37.06 error: subprocess-exited-with-error
#0 37.06
#0 37.06 × Getting requirements to build wheel did not run successfully.
#0 37.06 │ exit code: 1
#0 37.06 ╰─> See above for output.
#0 37.06
#0 37.06 note: This error originates from a subprocess, and is likely not a problem with pip.

我尝试用确切的版本号指定每个依赖项,但仍然存在错误

很奇怪的是,4周前我成功地将这个环境构建成一个docker镜像,代码完全相同。

======我将PyYAML升级到6.0.1后,仍然失败======

  1. 在requirements.txt中添加行
    PyYAML==6.0.1
  2. 再次运行 docker build
  3. 错误信息
#0 103.8 Collecting absl-py<2,>=0.9 (from kfp==1.8.19->-r requirements.txt (line 7))
#0 103.8   Downloading absl_py-1.4.0-py3-none-any.whl (126 kB)
#0 103.8      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 126.5/126.5 kB 3.1 MB/s eta 0:00:00
#0 103.8 INFO: pip is looking at multiple versions of kfp to determine which version is compatible with other requirements. This could take a while.
#0 103.8 ERROR: Cannot install -r requirements.txt (line 4), -r requirements.txt (line 7) and PyYAML==6.0.1 because these package versions have conflicting dependencies.
#0 103.8
#0 103.8 The conflict is caused by:
#0 103.8     The user requested PyYAML==6.0.1
#0 103.8     fiftyone 0.21.0 depends on PyYAML
#0 103.8     kfp 1.8.19 depends on PyYAML<6 and >=5.3
#0 103.8
#0 103.8 To fix this you could try to:
#0 103.8 1. loosen the range of package versions you've specified
#0 103.8 2. remove package versions to allow pip attempt to solve the dependency conflict
  1. 让我尝试使用
    PyYAML==5.3.1
    代替 成功!!!!!!

因为

kfp 1.8.19 depends on PyYAML<6 and >=5.3
会在另一个地方成为约束

python docker pip dependencies environment
3个回答
2
投票

我不知道为什么之前构建成功,现在失败了,但我遇到了同样的错误

#0 37.06         File "/tmp/pip-build-env-xd74p4sc/overlay/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 107, in __getattr__
#0 37.06           raise AttributeError(attr)
#0 37.06       AttributeError: cython_sources
#0 37.06       [end of output]

使用 PyYAML 包,将其安装在 docker (linux-alpine) 映像上时。 这已在最新的 PyYAML 包(v6.0.1)中修复,因此如果您升级包,应该会成功构建

https://github.com/yaml/pyyaml/blob/6.0.1/CHANGES#L9


1
投票

升级到 PyYAML V6.0.01 应该可以解决该问题。降级到 PyYAML v5.3.1 也可以,但不建议这样做,因为它带有已知的漏洞


1
投票

您可能想暂时将 PyYAML 版本降级到 5.3.1。更多信息请参阅:

https://github.com/cds-snc/notification-utils/pull/227

这看起来像是它之前有效但最近才停止工作的原因。

© www.soinside.com 2019 - 2024. All rights reserved.