0

我试图让 python3 在我的 EspressoBin 单板计算机(aarch64)上运行。我使用 Marvell 的openembedded发行版构建了一个 linux 发行版,并包含python3.

问题是没有设置python的搜索路径/环境变量。

如果我尝试启动 python3,我得到:

Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'

Current thread 0x0000007faef06000 (most recent call first):
Aborted

但是,如果我这样做:

$ export PYTHONHOME="/usr/lib64/python3.5/"
$ export PYTHONPATH="/usr/lib64/python3.5/:/usr/lib64/python3.5/lib-dynload"
$ python3
Python 3.5.1 (default, Jan 14 2019, 23:24:54) 
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

然后一切都神奇地起作用。

所以问题是......这些东西通常在哪里/如何设置?我尝试与 Ubuntu 进行比较,但由于某种原因,这些环境变量甚至根本不存在!我检查了sys.path上的文档,它说它sys.path是从 PYTHONPATH 填充的,“加上依赖于安装的默认值”。所以我猜 Ubuntu 的“依赖于安装的默认值”预先填充了正确的路径?

我当前的解决方案是将这两个环境变量添加到/etc/environment, 以及/etc/profile(用于 ssh 连接),但这似乎是一个 hacky 解决方法,我想把它做对。

4

2 回答 2

2

python3.5的路径".../lib64/..."看起来不是默认的,

“默认情况下,在prefix/lib/pythonversion源中搜索库exec_prefix/lib/pythonversion

所以我想它可能与此有关,如果您可以重新安装或修改它以"/lib/"代替安装,则"/lib64/"不需要设置这两个环境变量。

于 2019-02-21T15:53:03.387 回答
0

从 Python 源代码树中的 Modules/getpath.c 开始并不是一个坏主意。

哦,还有:似乎版本不匹配?Python 是 3.6,但你提供了 3.5 的模块?

于 2019-02-15T09:36:12.400 回答