Настройте Python3 из исходного кода, чтобы его можно было использовать во всех дистрибутивах Linux

#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