由于更新到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 阅读Excel定义的名称和单元格值(&Q;)

是否有必要使用Threads()中的args显式地将共享变量传递给Python中的线程函数或直接访问它?

如何转换Pandas中的数据,以使我 Select 的列名变为行值并增加行?

如何将多个字典合并到一个列中,并为不同的行使用相同的键

PythonPandas READ_EXCEL空数据帧

Strawberry FastAPI:如何调用正确的函数?

你能骗PIP 让它相信包已经安装了吗

Pandas groupby 然后 for each 组添加新行

移动所有列的数据帧值以使其单调递增

如何将搜索结果中的所有值保存在另一个列表中?

如何使用`re.findall`从字符串中提取数据

在 python pandas 中设置条件和分配新值

为什么 setattr 在绑定方法上失败

从大字典中弹出 N 项的最快方法

Python:在 map 对象上调用列表两次

在 Ubuntu 上为 Python3 安装 mod_wsgi

Python 3 - Zip 是 pandas 数据框中的迭代器

matplotlib - 模块sip没有属性setapi

调用 Python doctest 时如何启用省略号?

在 Python 中生成马尔可夫转移矩阵