Пути Python не устанавливаются во встроенной установке

Я пытаюсь запустить python3 на своем одноплатном компьютере EspressoBin (aarch64). Я построил дистрибутив Linux, используя открытый дистрибутив Marvell и включил 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), но это похоже на хакерский обходной путь, и я хочу сделать это правильно.

2 ответа

Решение

Путь ".../lib64/..." на python3.5 не смотрится по умолчанию,

"По умолчанию библиотеки ищутся в prefix/lib/pythonversion а также exec_prefix/lib/pythonversion " источник

Поэтому я думаю, что это может быть связано с этим, и если бы вы могли переустановить или изменить его для установки в "/lib/" вместо "/lib64/" вам не нужно устанавливать эти две переменные окружения.

Начиная с Modules/getpath.c в дереве исходных текстов Python не будет плохой идеей.

Ох, и: кажется, что несоответствие версий? Python - это 3,6, но вы предоставляете 3,5 модуля для него?

Другие вопросы по тегам