Travis CI构建报python setup.py egg_info运行失败如何修复
Travis CI构建
python setup.py egg_info did not run successfully报错解决 问题根因
这个报错和本地PyCharm使用的Conda虚拟环境无关,是Travis CI构建环境内依赖版本冲突导致的。python setup.py egg_info did not run successfully只是pip抛出的通用顶层提示,不代表egg_info机制废弃引发的兼容问题:当前新版本pip安装本地源码包时,仍会调用setuptools相关逻辑生成包元数据,这一步报错的本质是setuptools运行时触发了依赖冲突。
从错误栈最后一行AttributeError: 'str' object has no attribute 'name'可以定位,这是Python3.7环境下setuptools和其依赖importlib_metadata版本不匹配的典型特征:构建步骤中仅升级了pip,没有固定setuptools及相关依赖的版本,Travis提供的Python3.7虚拟环境会拉取互不兼容的最新版依赖组合,直接触发运行时错误。
本地运行正常是因为Conda环境内的setuptools、importlib_metadata是经过适配的版本组合,不存在版本错配问题。
修复方案
二选一即可:
- 若需要保留Python3.7构建配置,在执行
pip install .前先固定适配的依赖版本,修改.travis.yml的install段如下:
install: - pip install --upgrade pip - pip install "setuptools<66" "importlib_metadata<5" - pip install .
版本选择逻辑:setuptools 66及以上版本正式放弃Python3.7支持,importlib_metadata 5.0及以上版本也不再适配Python3.7,降到上述版本区间即可消除属性报错。
- 若项目不需要兼容Python3.7,直接将Travis构建使用的Python版本升级到3.8及以上即可。高版本Python自带标准库
importlib.metadata,无需依赖第三方importlib_metadata包,可从根源避免这类版本冲突。
原构建报错日志
Worker information 0.14s0.01s0.00s0.01s system_info Build system information 0.01s0.01s0.73s0.27s0.05s0.00s0.04s0.00s0.01s0.01s0.01s0.01s0.01s0.00s0.00s0.02s0.00s0.01s0.25s0.00s0.00s0.00s0.01s0.00s0.09s0.00s0.97s0.00s0.00s6.03s0.00s3.57s0.00s2.52s docker_mtu_and_registry_mirrors resolvconf git.checkout 1.09s$ git clone --depth=50 --branch=main https://github.com/REDACTED 0.01s0.01s$ source ~/virtualenv/python3.7/bin/activate $ python --version Python 3.7.1 $ pip --version pip 22.0.4 from /home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/pip (python 3.7) install.1 2.45s$ pip install --upgrade pip 0.79s$ pip install . Processing /home/travis/build/REDACTED Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [22 lines of output] Traceback (most recent call last): File "<string>", line 36, in <module> File "<pip-setuptools-caller>", line 14, in <module> File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/setuptools/__init__.py", line 18, in <module> from setuptools.dist import Distribution File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/setuptools/dist.py", line 34, in <module> from ._importlib import metadata File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/setuptools/_importlib.py", line 28, in <module> disable_importlib_metadata_finder(metadata) File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/setuptools/_importlib.py", line 12, in disable_importlib_metadata_finder import importlib_metadata File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 471, in <module> __version__ = version(__name__) File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 438, in version return distribution(package).version File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 411, in distribution return Distribution.from_name(package) File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/importlib_metadata/__init__.py", line 179, in from_name dists = resolver(name) File "/home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages/setuptools/_vendor/importlib_metadata/__init__.py", line 886, in find_distributions found = self._search_paths(context.name, context.path) AttributeError: 'str' object has no attribute 'name' [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details. The command "pip install ." failed and exited with 1 during . Your build has been stopped.
内容的提问来源于stack exchange,提问作者dalek_fred
相关产品推荐
相关产品推荐

