CentOS 6.7: обновление Python до 2.7
По умолчанию – CentOS 6 использует Python 2.6, и Django 1.3.
Задача – ввести Python 2.7, Setuptools, PIP и Django 1.8.
Ещё одно замечание, прежде чем вы начнёте – с вероятностью в 99% – проекты на Django 1.3 не “взлетят” на Django 1.8.
Основная проблема при обновлении (какая почему-то почти нигде не указывается) – это то, что YUM зависит от от версии Python:
repoquery --requires yum
...
python(abi) = 2.7
Ниже будет показано – как собственно это проявляется.
Установка выполняется на:
cat /etc/redhat-release
CentOS release 6.7 (Final)
Обновляем все введённые пакеты:
yum update
Кроме того – для установки Setuptools потребуется модуль zlib-devel:
yum install zlib-devel
Так как без него – будет промах при вызове zlib():
...
File "/usr/local/lib/python2.7/zipfile.py", line 526, in __init__
self._decompressor = zlib.decompressobj(-15)
AttributeError: 'NoneType' object has no attribute 'decompressobj'
А для установки PIP – модуль openssl-devel:
yum install openssl-devel
Без какого будет возникать такая ошибка:
...
File "/tmp/tmpSUScFN/pip.zip/pip/_vendor/__init__.py", line 92, in load_module
ImportError: No module named 'pip._vendor.requests'
Установка Python 2.7
Значительно: проверьте $PATH:
echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/setevoy/scripts/:/home/setevoy/scripts/money/:/home/setevoy/aws/cli_tools/ec2-api-tools-1.7.2.3/bin:/root/bin:/home/setevoy/scripts/:/home/setevoy/scripts/money/:/home/setevoy/aws/cli_tools/ec2-api-tools-1.7.2.3/bin
Значительно, что бы /usr/local/bin был до /usr/bin – т.к. Python 2.6 установлен в /usr/bin, а Python 2.7 – будет устанавливаться в /usr/local/bin (дальней – покажу как это определяется).
Проверяем наличие компилятора:
gcc -v
...
gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
Если его нет – устанавливаем:
yum install gcc
С сайта Python загружаем заключительную доступную версию:
cd /tmp/
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
Распаковываем, меняем директорию:
tar xfp Python-2.7.9.tgz
cd Python-2.7.9
Испытываем зависимости и создаём Makefile:
./configure
Теперь, возвращаясь к вопросу о $PATH: если посмотреть созданный Makefile – то видать, что prefix по умолчанию указан /usr/local:
cat Makefile | grep prefix
...
prefix= /usr/local
...
Что и требуется. Изменить его можно опцией —prefix:
./configure -h | grep prefix
--prefix=PREFIX install architecture-independent files in PREFIX
Собираем пакет:
make
make install
Испытываем:
python --version
Python 2.7.9
Проверяем – какой именно Python используется:
which python
/usr/local/bin/python
Тогда как престарелый – остался в системе:
/usr/bin/python --version
Python 2.6.6
YUM работает:
yum history
Loaded plugins: fastestmirror, security
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
7 | root | 2015-05-06 17:03 | I, U | 28 <
6 | root | 2015-04-05 17:32 | Install | 2 >E
5 | root | 2015-04-05 17:31 | Install | 1 <
4 | root | 2015-04-05 17:22 | Install | 6 >
3 | root | 2015-04-05 17:21 | Install | 1
2 | root | 2015-04-05 17:02 | I, U | 138
1 | System | 2015-04-05 16:36 | Install | 629
history list
И подлинно – с Python 2.7 YUM работать не может:
/usr/local/bin/python /usr/bin/yum -h
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
No module named yum
Please install a package which provides this module, or
verify that the module is installed correctly.
It’s possible that the above module doesn’t match the
current version of Python, which is:
2.7.9 (default, May 6 2015, 17:31:40)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)]
…
Тогда как с Python 2.6 – всё трудится по-прежнему:
/usr/bin/python /usr/bin/yum -h | head -n 4
Loaded plugins: fastestmirror, security
Usage: yum [options] COMMAND
List of Commands:
Не ведаю – как именно YUM определяет путь к Python – но факт, он продолжает использовать /usr/bin.
Если каких-то модулей не хватает (как openssl-devel в начине статьи) – достаточно просто пересобрать и установить Python поверх:
make clean
./configure
make
make install
С этим разобрались – переходим к Setuptools и PIP.
Установка Setuptools
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py
...
Installed /usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg
Processing dependencies for setuptools==15.2
Finished processing dependencies for setuptools==15.2
Установка PIP
wget https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py
view source
python get-pip.py
...
Successfully installed pip-6.1.1
Свежие комментарии