由于更新到python@3.9.8,我们在CI管道中使用Black时出错.

black....................................................................Failed
- hook id: black
- exit code: 1
Traceback (most recent call last):
  File "../.cache/pre-commit/repol9drvp84/py_env-python3/bin/black", line 5, in <module>
    from black import patched_main
  File "../.cache/pre-commit/repol9drvp84/py_env-python3/lib/python3.9/site-packages/black/__init__.py", line 52, in <module>
    from typed_ast import ast3, ast27
  File "../.cache/pre-commit/repol9drvp84/py_env-python3/lib/python3.9/site-packages/typed_ast/ast3.py", line 40, in <module>
    from typed_ast import _ast3
ImportError: ../.cache/pre-commit/repol9drvp84/py_env-python3/lib/python3.9/site-packages/typed_ast/_ast3.cpython-39-x86_64-linux-gnu.so: undefined symbol: _PyUnicode_DecodeUnicodeEscape

可以通过以下方式轻松重现错误:

% pip install typed_ast
% python3 -c 'from typed_ast import ast3'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: 
/usr/lib/python3/dist-packages/typed_ast/_ast3.cpython-39-x86_64-linux-gnu.so: 
undefined symbol: _PyUnicode_DecodeUnicodeEscape

目前唯一的解决办法是降级到python@3.9.7.

还有其他修复方法吗?

另见第https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1829077.html

推荐答案

最初的错误是管道出现故障.Black失败了,因为它被固定到了一个旧版本上,而这个版本现在在python3.9.8上失败了.

Updating black to the latest version 100 fixed the error for me.

另见typed_ast issue #169:

对于其他可能在搜索中找到这个的人,我通过

更新:

使用最新的typed-ast版>=1.5.0似乎也有效

e、 g.pip install typed-ast --upgrade

Python-3.x相关问答推荐

Pandas 数据帧断言等同于NaN

TypeError:&Quot;Value&Quot;参数必须是标量、Dict或Series,但您传递了&Quot;Index&Quot;

PythonPandas 创建一个列并添加到DataFrame

如何使用TensorFlow Keras子类化来构建和训练模型

如何立即从asyncio.Task获取异常?

隐藏Cartopy中高纬度非矩形投影的右侧轴(纬度)标签

Pandas 在每组两个条件之间获得时间增量

通过点和线计算CV2 Homography

如何在数据['column']中的'string'等条件下应用pandas

参数化泛型不能与类或实例判断一起使用

将变量传递给 Google Cloud 函数

python 3集合中的Discard()和Remove()函数有什么区别

smtplib 在 Python 3.1 中发送带有 unicode 字符的邮件的问题

multiprocessing.Queue 中的 ctx 参数

numpy.ndarray 与 pandas.DataFrame

Python 3.10 模式匹配 (PEP 634) - 字符串中的通配符

Python3四舍五入到最接近的偶数

virtualenv virtualenvwrapper virtualenv:错误:无法识别的参数:--no-site-packages

0 是 0 == 0(#evaluates 为真?)

python中的订单字典索引