Проблема с установкой Python 2.7.8 наряду с 2.7.5 на RHEL 7.2

У меня есть экземпляр Amazon EC2 с установленным Red Hat Linux 7.2. Он поставляется с установленной системой Python 2.7.5.

Я собрал альтернативную установку Python 2.7.8 (это то, что я использую в другой среде, которую я пытаюсь реплицировать). Я буду использовать это, чтобы создать virtualenv для запуска моего приложения Django.

Но вызов python2.7 всегда приводит меня к общесистемному интерпретатору python 2.7.5.

Я следовал инструкциям: http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/

$ sudo yum groupinstall 'development tools' $ sudo yum install zlib-dev openssl-devel sqlite-devel bzip2-devel $ sudo yum install wget $ sudo wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz $ sudo yum install xz-libs $ xz -d Python-2.7.8.tar.xz $ tar -xvf Python-2.7.8.tar $ cd Python-2.7.8 

Отредактировал файл /etc/ld.so.conf, чтобы добавить строку

 /usr/local/lib $sudo /sbin/ldconfig --> make the dynamic linker aware of the change $sudo ./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared $make 

Я получаю следующее сообщение, но я не уверен, что это относится к моей проблеме.

 Python build finished, but the necessary bits to build these modules were not found: _bsddb _tkinter bsddb185 dbm dl gdbm imageop sunaudiodev To find the necessary bits, look in setup.py in detect_modules() for the module's name. $sudo make altinstall $which python /usr/bin/python ---> system wide Python 2.7.5 $which python2.7 /usr/local/bin/python2.7 ---> this should point to Python 2.7.8 that was compiled and installed. 

Но вызов python2.7 указывает на общесистемный интерпретатор Python 2.7.5:

 $python2.7 Python 2.7.5 (default, Oct 11 2015, 17:47:16) [GCC 4.8.3 20140911 (Red Hat 4.8.3-9)] on linux2 

Почему это происходит?

FYI, мой PATH включает / usr / local / bin.

 $echo $PATH /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin 

One Solution collect form web for “Проблема с установкой Python 2.7.8 наряду с 2.7.5 на RHEL 7.2”

Ссылка: http://koansys.com/tech/building-python-with-enable-shared-in-non-standard-location «Я мог бы использовать« ldd »для добавления своих библиотек в системный кеш, и это будет работать так так как не было никаких других питонов, которые были бы такими же версиями, которые нуждались в этом ».

Я исправил свою проблему, удалив / usr / local / lib из /etc/ld.so.conf и вместо этого указав LDFLAGS с параметром -rpath следующим образом:

 $sudo ./configure --prefix=/usr/local/python --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/python/lib" 

Обратите внимание, что это -Wl, а не -W1 (т.е. нижний регистр L, а не цифра 1). Я потратил много времени на выяснение этой ошибки! Благодаря gcc soname непризнанная командная строка для указания этого.

 $make $sudo make altinstall 

Это сработало, и использование интерпретатора Python с этого пути отлично работает:

 $/usr/local/python/bin/python2.7 -- version Python 2.7.8 

В большинстве руководств в Интернете показано, как устанавливать две разные версии Python бок о бок, например, Python 2.6.x и 2.7.x или Python 2.7.x и 3.3.x.

Но когда обе установки Python 2.7.x, то, похоже, проблема, если путь к пользовательской установке указан в /etc/ld.so.conf – возможно, библиотеки, которые были выбраны, принадлежат системной умолчанию … I все еще не поняли, что происходит под капотом.

Я также добавил / usr / local / python / bin в свой PATH в .bashrc.

Однако на последующих этапах установки setuptools, pip, virtualenv и virtualenvwrapper мне все же пришлось явно вызывать полный путь для python2.7 или pip2.7, в противном случае пакет устанавливается в /usr/lib/python2.7/site -пакеты / вместо /usr/local/python/lib/python2.7/site-packages.

Python - лучший язык программирования в мире.