вторник, 9 декабря 2014 г.

CentOS 6 + Python 2.7

В сети есть много примеров с ручной компиляцией питона в /usr, но пока ни в одном примере не было последующего заворачивания в пакеты, а прямая установка хороша только для девел-машин и вообще долго.
Тем более, штатно есть пакет
centos-release-SCL.x86_64 : CentOS Software Collections release configs
(Там же - Perl 5.16.3, PHP 5.4.14, Python 3.3, Ruby 1.9.3, MariaDB 5.5, MySQL 5.5, PostgreSQL 9.2, Node.js 0.10)



yum install centos-release-SCL
После его установки появится набор пакетов python27*. Одна проблема, ставится оно в /opt/rh/python27

Считаем, что запускаем все наши скрипты через virtualenv, поэтому также доставим и его.

yum install python27 python27-python-virtualenv.noarch

Поскольку ставится "Не туда", будет несколько проблем, в том числе 
/opt/rh/python27/root/usr/bin/python2.7: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

Несколько упрощает жизнь скрипт (выполнять через source)
/opt/rh/python27/enable

Также можно вызывать
scl enable python27 bash

В некоторых случаях может помочь подключение каталога библиотек напрямую, например
env LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64 /opt/rh/python27/root/usr/bin/python

Далее, нам нужен pip, но штатно его нет. В каждый virtualenv его надо будет ставить отдельно. 
$ source /opt/rh/python27/enable 
$ cd /opt
$ mkdir test
$ virtualenv-2.7 test/venv
$ source test/venv/bin/activate
(venv)$ easy_install-2.7 pip

Упростим сразу жизнь, поправим activate. Я делаю так -- в test/venv/bin/activate нахожу строку
PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
и после ставлю 
source /opt/rh/python27/enable 

Также для своего удобства (с venv), чтобы показывало не venv а каталог выше, привожу ту строку к виду
PS1="(`basename $(dirname \"$VIRTUAL_ENV\")`)$PS1"

Также можно в .bash_profile добавить
source /opt/rh/python27/enable

Если делать питон 2.7 системным, не забываем что yum и команда требуют именно 2.6 версию, поэтому нужен фикс
sudo sed -i s/python/python2.6/g /usr/bin/yum 

Линки

Комментариев нет:

Отправить комментарий