升级setuptools_scm从6.0.1至6.3.1后check-manifest预提交钩子执行失败问题求助
setuptools-scm 6.3.1 与 check-manifest 预提交钩子兼容问题:无效版本字符串含库前缀
我一直用setuptools-scm 6.0.1搭配check-manifest作为预提交钩子,项目运行一切正常。但升级到setuptools-scm 6.3.1后,check-manifest钩子执行失败,报错无法从sdist打包中确定正确的版本字符串。
错误详情
ERROR Backend subproccess exited when trying to invoke build_sdist Traceback (most recent call last): File "/home/zobayer/.cache/pre-commit/repoijtr5gb3/py_env-python3/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 349, in <module> main() File "/home/zobayer/.cache/pre-commit/repoijtr5gb3/py_env-python3/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 331, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "/home/zobayer/.cache/pre-commit/repoijtr5gb3/py_env-python3/lib/python3.8/site-packages/pep517/in_process/_in_process.py", line 301, in build_sdist return backend.build_sdist(sdist_directory, config_settings) File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/build_meta.py", line 225, in build_sdist return self._build_with_temp_dir(['sdist', '--formats', 'gztar'], File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/build_meta.py", line 207, in _build_with_temp_dir self.run_setup() File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/build_meta.py", line 150, in run_setup exec(compile(code, __file__, 'exec'), locals()) File "setup.py", line 8, in <module> setup( File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/__init__.py", line 153, in setup return distutils.core.setup(**attrs) File "/usr/local/lib/python3.8/distutils/core.py", line 108, in setup _setup_distribution = dist = klass(attrs) File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/dist.py", line 453, in __init__ _Distribution.__init__( File "/usr/local/lib/python3.8/distutils/dist.py", line 292, in __init__ self.finalize_options() File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools/dist.py", line 831, in finalize_options ep(self) File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools_scm/integration.py", line 94, in infer_version dist.metadata.version = _get_version(config) File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools_scm/__init__.py", line 185, in _get_version dump_version( File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/setuptools_scm/__init__.py", line 90, in dump_version parsed_version = Version(version) File "/tmp/build-env-nswqxife/lib/python3.8/site-packages/packaging/version.py", line 266, in __init__ raise InvalidVersion(f"Invalid version: '{version}'") packaging.version.InvalidVersion: Invalid version: 'extras-0.3.0.dev3+g4d323bc.d20210909'
可以看到生成的版本字符串'extras-0.3.0.dev3+g4d323bc.d20210909'明显异常,包含了库名称前缀。降级回6.0.1能临时解决问题,但我希望找到两者兼容的方案,尝试过设置weak flag或SETUPTOOLS_SCM_PRETEND_VERSION=0.0都没有效果,完全搞不清为什么会出现'extras'这个前缀。
项目配置文件(pyproject.toml)
[build-system] requires = ["setuptools>=42", "wheel", "setuptools_scm[toml]>=3.4"] build-backend = "setuptools.build_meta" [tool.setuptools_scm] write_to = "logging_/version.py" write_to_template = "# -*- coding: utf-8 -*- __version__ = '{version}' " version_scheme = "release-branch-semver" [tool.check-manifest] ignore = ["logging_/version.py"] [tool.black] line-length = 120 include = '\.pyi?$' exclude = ''' /(\.eggs | \.git | \.pytest_cache | \.tox | \.venv | build | dist )/ '''
后续更新
- 我已在setuptools-scm项目中提交了该问题
- 经确认,此问题实为check-manifest库的bug,相关问题报告及修复方案已提交
内容的提问来源于stack exchange,提问作者Zobayer Hasan
相关产品推荐
相关产品推荐

