如何修复命令"python setup.py egg_info"失败,错误代码为1



我继承了一个docker容器化设置。以前维护它的工程师早已不在了。当我试图构建映像时,它在requirements.txt 中指定的一个包的安装过程中抱怨

requirements.txt内容:

setuptools==40.6.3
pip==1.5.4
paramiko==2.4.2
scp==0.13.0
timeout_decorator==0.4.1
requests==2.21.0
pylint==1.9.4
jsonschema==2.6.0
six==1.11.0
dnslib==0.9.10
SQLAlchemy==1.3.5
psycopg2==2.8.3
future==0.17.1
tenacity

安装过程中出现错误:

Collecting lazy-object-proxy (from astroid<2.0,>=1.6->pylint==1.9.4->-r requirements.txt (line 7))
Downloading https://files.pythonhosted.org/packages/6f/3e/7c80e8536b9d5eb66e784fff4c359adf9e55b37460fd6928192256ba71f2/lazy-object-proxy-1.7.0.tar.gz (42kB)
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-JMyxNe/lazy-object-proxy/setup.py", line 146, in <module>
distclass=BinaryDistribution,
File "/usr/lib/python2.7/dist-packages/setuptools/__init__.py", line 128, in setup
_install_setup_requires(attrs)
File "/usr/lib/python2.7/dist-packages/setuptools/__init__.py", line 123, in _install_setup_requires
dist.fetch_build_eggs(dist.setup_requires)
File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 513, in fetch_build_eggs
replace_conflicting=True,
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 774, in resolve
replace_conflicting=replace_conflicting
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1057, in best_match
return self.obtain(req, installer)
File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 1069, in obtain
return installer(requirement)
File "/usr/lib/python2.7/dist-packages/setuptools/dist.py", line 580, in fetch_build_egg
return cmd.easy_install(req)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 698, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 724, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 909, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1177, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1163, in run_setup
run_setup(setup_script, args)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 253, in run_setup
raise
File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in setup_context
yield
File "/usr/lib/python2.7/contextlib.py", line 35, in __exit__
self.gen.throw(type, value, traceback)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 166, in save_modules
saved_exc.resume()
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 141, in resume
six.reraise(type, exc, self._tb)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 154, in save_modules
yield saved
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 195, in setup_context
yield
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 250, in run_setup
_execfile(setup_script, ns)
File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
code = compile(script, filename, 'exec')
File "/tmp/easy_install-bKS9kl/setuptools_scm-7.0.5/setup.py", line 20
def scm_version() -> str:
^
SyntaxError: invalid syntax
----------------------------------------
[91mCommand "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-JMyxNe/lazy-object-proxy/

我不知道该在哪里解决这个问题。我知道它使用的是python 2.7,这是不受支持的,但目前将整个项目引入python 3+并不理想。我相信下面的软件包及其版本应该能与python 2.7一起使用,因为在我删除图像之前,它一直都是这样。如何解决此问题?

TL;DR:尝试将setuptools-stm=5.0.2添加到requirements.txt


至少有一些项目正在尝试使用Python 3。

File "/tmp/easy_install-bKS9kl/setuptools_scm-7.0.5/setup.py", line 20
def scm_version() -> str:

这一行def scm_version() -> str:使用的是Python 3.5中引入的类型提示。

看起来这是来自setuptools-scm。7.0.5是最新版本。

我认为这是在安装pylint时发生的,基于回溯第一行的信息,作为一个自动依赖安装。您可以尝试将setuptools-stm=5.0.2作为一个需求进行固定,因为它是支持Python2的最后一个版本。

可能工作。如果它真的坏了,就不能保证其他东西不会坏。您可能需要固定其他需求(如tenacity,它没有固定版本(。

这是我最好的建议!

相关内容

最新更新