【问题标题】:Python distutils keyErrorPython distutils keyError
【发布时间】:2022-01-21 20:00:49
【问题描述】:

我在 setup.py 文件中有一个 disutils 的工作代码,如下所示

from distutils.command.install import INSTALL_SCHEMES

for scheme in list(INSTALL_SCHEMES.values()):
    scheme['data'] = scheme['purelib']

但今天我在 github 操作中尝试运行 CI 时遇到以下错误

Traceback (most recent call last):
  File "/home/runner/work/kombu/kombu/setup.py", line 60, in <module>
    scheme['data'] = scheme['purelib']
KeyError: 'purelib'

我没有足够的资源来找出解决方案,是的 distutils 已被弃用,但由于代码一直工作到今天早上,任何人都可以指出正确的解决方法吗?

【问题讨论】:

  • 我在另一个库中看到同样的问题:文件“/tmp/pip-install-29lo1sxq/mysql-connector_180023bd264b44c0b10131020cf8a9e8/setup.py”,第 44 行,在 install_scheme['data'] = install_scheme['purelib'] KeyError: 'purelib'
  • 我将此作为临时解决方案stackoverflow.com/a/70451233/3544931

标签: python setuptools distutils


【解决方案1】:

我遇到了和你一样的错误。上周的登台服务器设置工作,本周生产没有,相同版本的python,相同版本的库。不知道发生了什么变化。

无论哪种方式:

尝试将此添加到您的 pip 安装中:

SETUPTOOLS_USE_DISTUTILS=stdlib pip install .... 

正如setuptools issue所提到的

【讨论】:

  • 我也尝试过降级没有影响的版本,但还是不行。必须检查您的解决方案谢谢。
  • 我告诉一个投稿人打开这个问题哈哈github.com/pypa/setuptools/issues/2936
【解决方案2】:

我已降级到 setuptools==58.2.0,现在它又可以正常工作了。

【讨论】:

【解决方案3】:

在 CI 中限制设置工具有助于摆脱这种回归 https://github.com/celery/kombu/commit/c4a8c2a69f0caad080984e466a5ccdb4be068373 https://github.com/celery/kombu/pull/1466

在不久的将来https://github.com/celery/kombu/pull/1467 仍在考虑从 setup.py 中删除 distutils hack。

参考Including non-Python files with setup.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    • 2011-08-24
    • 1970-01-01
    • 2015-04-12
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多