#python #python-3.x #linux #environment-variables #configure
#python #python-3.x #linux #переменные среды #настройте
Вопрос:
Я хочу создать Python3 из исходного кода, выполнив простые шаги:
> wget https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz
> tar xzf Python-3.8.3.tgz
> cd Python-3.8.3
> ./configure --prefix=/opt/install38 --exec-prefix=/opt/install38
> make -j8
> make install
Это успешно устанавливает python в /opt/install38/bin
каталог и копирует библиотеки в /opt/install38/lib
каталог.
Идея состоит в том, чтобы отправить эту установку так, чтобы не было никаких версий или каких-либо других зависимостей от установки. Однако, когда я использовал эту установку на каком-либо другом компьютере, я получил следующую ошибку:
> cd install38/bin
> ./python3.8
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = './python'
....
....
Эту ошибку можно устранить, установив переменную среды PYTHONHOME=..
, таким образом, python binary может загружать библиотеки из install38/lib
каталога.
Можем ли мы как-то встроить эту PYTHONHOME
переменную при сборке python, чтобы пользователю не приходилось устанавливать ее вручную? Или есть какое-то другое решение для этого? Я пробовал следующее, но это не помогает:
./configure --enable-optimizations --prefix=/opt/install38 --exec-prefix=/opt/install38 LDFLAGS="-Wl,-rpath,../lib"
Я предполагаю, что проблема связана с установкой PYTHONHOME
переменной.
Комментарии:
1. Когда вы запускаете,
ldd /opt/install38/bin/python3
указывает ли это на/opt/install38/lib/python3*so
?2. @alvits нет. Он не указывает ни на какой python3 * so.
3.
libpython3.8.so.1.0 => not found