Пути 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 модуля для него?