py3compile 错误 - 无法获取区域设置编码

py3compile 错误 - 无法获取区域设置编码

重新安装python3.2后,调用时出现以下错误py3compile

Fatal Python error: Py_Initialize: Unable to get the locale encoding
LookupError: no codec search functions registered: can't find encoding
Aborted

我知道这可能是缺少环境变量的问题。但我不知道如何解决它。我检查了env 输出,没有找到任何 PYTHONXXX 变量。

答案1

请注意,这是一个迟到的回复,因为有人已经就这个问题提供了赏金。另请注意,如果不重现此问题,我无法验证是否有任何解决方案有效。我在这里只是建议一种解决方案,而不是提供解决方案。

我认为你必须按照概述设置两个变量这里,因为py3compile需要知道某些资源在哪里。它通过这些 PYTHONXXX 变量查找它们。

所以

export PYTHONPATH='/usr/lib64/python3.21:/usr/lib64/python3.2/lib-dynload:/usr/lib64/python3.2/site-packages'
export PYTHONHOME='/usr/lib64/python3.2'

更确切地说

export PYTHONPATH='/path/to/pythondir:/path/to/pythondir/lib-dynload:/path/to/pythondir/site-packages'
export PYTHONHOME='/path/to/pythondir'

应该可以解决问题。

答案2

尝试以下操作(将 opkg 替换为您最喜欢的包管理器)

 # opkg install python3-modules
 # opkg install python3-misc

答案3

在 voidlinux 上,除了设置PYTHONHOMEPYTHONPATH重新链接默认 python 的符号链接之外,还/usr/bin修复了此错误python3.5python2.7我知道这是我设置的路径,也是需要 python 的程序所需要的。

请注意,设置路径并3.5没有修复python3.5 Py_Initialize此处的错误。谁说维护系统很容易。

这就是为什么我们有0安装。如果它能够被我们开源世界的更多人采用就好了。目前,由于 libcurl OCaml 问题,我们正在努力让它在 voidlinux 上编译。大多数发行版的包管理存储库中都有它。

0install 通过完全封装程序使其以其所需的依赖项运行而解决了所有这些问题,而不会与系统上安装的其他版本或使用 0install 发生冲突,并且节省了软件包维护人员的时间,因为它消除了用户系统和开发人员之间的那些链接,因为开发人员直接为所有系统提供一个0install包(零安装是一个cross platform package management system)。

相关内容