嵌入式安装未设置Python路径

时间:2019-02-14 18:49:47

标签: python linux python-3.x openembedded linux-distro

我正在尝试在我的EspressoBin单板计算机(aarch64)上运行python3。我使用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(用于ssh连接)添加到/etc/profile中,但这似乎是一个棘手的解决方法,我想正确地做。

2 个答案:

答案 0 :(得分:2)

python3.5的路径rs.initiate()看起来不是默认值

  

“默认情况下,在".../lib64/..."中搜索库   和prefix/lib/pythonversionsource

所以我想这可能与此有关,如果您可以重新安装或修改它以将其安装在exec_prefix/lib/pythonversion中而不是"/lib/"中,则无需设置这两个环境变量。 / p>

答案 1 :(得分:0)

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

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