【问题标题】:Python built from source can't find UTF-32-BE encoding从源代码构建的 Python 找不到 UTF-32-BE 编码
【发布时间】:2020-10-27 12:55:01
【问题描述】:

我正在开发一个定制的 linux。当我使用requests 进行一些HTTP 发布时,出现了一个导入异常,在idna 中出现了一些东西。再说一句,我的系统是little-endian linux。

>>> from uts46data import uts46data
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: utf-32-be
>>>

我已经检查了如下编码。

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> sys.getfilesystemencoding()
'ANSI_X3.4-1968'

我猜这是编码问题,我该怎么办?

更多信息如下。

/ # python -c "import sys;print(sys.version)"
2.7.8 (default, Jul  7 2020, 07:25:41) 
[GCC 7.3.1 20180425]
/ # python -c "import codecs;print codecs.lookup('utf-32-be')"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
LookupError: unknown encoding: utf-32-be
/ # 

【问题讨论】:

  • 你能告诉我们更多关于你的linux是如何定制的吗?特别是,python是如何构建的?您是从源代码构建的吗?
  • @snakecharmerbs 是的,我必须从源代码构建 python。该系统就像一个嵌入式系统,构建内核,然后添加一些应用程序。
  • 我会检查makeconfigure 的输出。我怀疑构建环境中缺少编解码器模块构建 utf-32-be 所需的东西。
  • “Lib/encodings”目录下似乎缺少utf-32-be.py。固定。
  • @lxyscls 如果这是解决方案,您可以发布并将其标记为答案吗?

标签: python python-2.7 build cpython python-internals


【解决方案1】:

回答我自己。

Python 将从 encodings 目录定位它的编码文件。可以从 Python 源码包中复制对应的编码文件,在 Lib/encodings 目录下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2014-06-29
    • 2011-04-02
    • 2021-07-12
    • 2013-04-21
    • 2023-03-25
    相关资源
    最近更新 更多