Установите python 2.6 в CentOS


85

У меня есть оболочка, в которой работает CentOS.

Для проекта, который я делаю, мне нужен Python 2.5+, но CentOS в значительной степени зависит от 2.4.

Судя по тому, что я читал, при обновлении до 2.5 возникнут некоторые проблемы.

Я хочу установить 2.5 отдельно от 2.4, но не знаю, как это сделать. Пока что я загрузил архив с исходным кодом, распаковал его и сделал то, на ./configure --prefix=/optчем я хочу, чтобы он закончился. Могу я сейчас просто make, make install? Или есть еще?


8
Я лично часто использовал CentOS и переключился на Ubuntu из-за того, насколько грубы дистрибутивы RedHat / CentOS (Python 2.4 ...). Если вы политически можете сделать скачок, сделайте это. Вы будете намного счастливее, и вам больше не придется беспокоиться о таких вещах.
Адам Нельсон,

1
Скомпилировать из исходного кода и установить их /usr/local(по умолчанию) не должно вызывать никаких проблем. Или, что еще лучше, выбросьте centos и установите debian: P
o0 '.

19
А? Суть CentOS / RHEL - долгосрочная поддержка. Если есть возможность переключиться на последний дистрибутив, то переход на Fedora имеет гораздо больше смысла, чем переход на Ubuntu для кого-то с опытом работы с CentOS.
Мухаммад Алькарури,

1
Чтобы быть ясным, без каких-либо саркастических боковых панелей: ДА. Вы можете установить более новую версию Python из исходного кода в / opt, как вы указали. Или по умолчанию он идет в / usr / local / {bin, lib, share, man}, который также отлично работает и не мешает python 2.4, который ВСЕ ЕЩЕ является версией в CentOS 5. CentOS 6 поставляется с python 2.6.6.
IcarusNM

Ответы:


79

Вы также можете использовать EPEL-репозиторий , а затем sudo yum install python26установить python 2.6


8
Как использовать EPEL: fedoraproject.org/wiki/EPEL/FAQ#howtouse - Но не забудьте заменить i386 своей аркой, если это не 32-битный x86
rakslice

Сработало у меня! Мне они понадобились и для другого проекта, так что я вдвойне счастлив!
rholmes

1
похоже, Python 2.6 уже не в epel.
mujimu

1
@mujimu, я думаю, они могли сделать 2.6 по умолчанию вместо 2.4. Таким образом, такие команды yum install python26могут быть просто в yum install pythonзависимости от вкуса / версии ОС.
Джеймс Оравек

31

Попробуйте эпель

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
sudo rpm -ivh epel-release-5-4.noarch.rpm
sudo yum install python26

Исполняемый файл python будет доступен по адресу /usr/bin/python26

mkdir -p ~/bin
ln -s /usr/bin/python26 ~/bin/python
export PATH=~/bin:$PATH # Append this to your ~/.bash_profile for persistence

Теперь pythonкоманда выполнитpython 2.6


Спасибо за последний бит - я только что установил python26 и подумал, как сделать так, чтобы значение по умолчанию (2.4) относилось к 2.6. Создание символической ссылки и настройка пути сделали это.
Джей Сидри

Это, очевидно, сработает ... для одного пользователя ... пока кто-то не заменит python2.6 на 3.0 или что-то еще ... но, похоже, это рекомендуемый способ сделать это. Мне сложно поверить в то, что CentOS не поставляется с инструментом для выбора версии различных одновременно установленных пакетов для использования (я часто сталкиваюсь с двумя версиями Java, PostgreSQL и теперь python), что-то вроде configure_python -s 2.6 и все остальное «волшебным образом» становится на свое место за занавесками, и пользователю не нужно думать об угловых шкафах на годы вперед.
Томислав Накич-Альфиревич

Я думаю, причина в том, что, будучи корпоративной ОС, в основном используемой для серверов, люди не занимаются разработкой Cent OS. После того, как все настроено правильно, они не касаются сервера, за исключением периодических обновлений безопасности.
Джойс Бабу

1
@ TomislavNakic-Alfirevic Я еще не пробовал, но github.com/yyuu/pyenv выглядит многообещающим. Он собирает все из исходников и устанавливает каждую версию в свой собственный каталог. Похоже, что он больше нацелен на установку разработчиками в их собственные домашние каталоги, но сборки можно запускать как sudo и нацеливаться на общий каталог.
Марк Эванс,

@MarkEvans Python на самом деле не моя сильная сторона, поэтому я легко могу ошибаться, но pyenv выглядит как решение другой проблемы. Если вы замените «python» на «JDK», я бы определенно не был в восторге от его компиляции только для того, чтобы иметь возможность развернуть приложение Java: мне нужна версия JDK, которую кто-то другой скомпилировал, протестировал, повторно протестировал и снова протестировал с какой-либо версией CentOS я использую. Я бы предпочел применить ту же логику к Python. Тем не менее, я уверен, что есть варианты использования, в которых работает pyenv, например dev. (в отличие от развертывания) машин.
Томислав Накич-Альфиревич

28

Когда я сталкиваюсь с подобными ситуациями, я обычно избегаю диспетчера пакетов, особенно если было бы неловко что-то сломать, например, производственный сервер. Вместо этого я бы пошел в Activestate и загрузил их двоичный пакет:

https://www.activestate.com/activepython/downloads/

Это устанавливается путем запуска сценария, который помещает все в папку и не затрагивает системные файлы. Фактически, вам даже не нужны права root для его настройки. Затем я меняю имя двоичного файла на что-то вроде apy26, добавляю эту папку в конец PATH и начинаю кодирование. Если вы устанавливаете пакеты с помощью apy26 setup.py installили если вы используете virtualenv и easyinstall, то у вас есть настолько гибкая среда Python, насколько вам нужно, без использования стандартного системного Python.

Изменения ... Недавно я проделал некоторую работу по созданию переносимого двоичного файла Python для Linux, который должен работать в любом дистрибутиве без внешних зависимостей. Это означает, что любые двоичные разделяемые библиотеки, необходимые для переносимого модуля Python, являются частью сборки, включены в архив и установлены в структуре частных каталогов Python. Таким образом, вы можете установить Python для своего приложения, не вмешиваясь в установленный системой Python.

На моем сайте github есть сценарий сборки, который был тщательно протестирован на Ubuntu Lucid 10.04 LTS как при 32-разрядной, так и при 64-разрядной установке. Я также построил его на Debian Etch, но это было довольно давно, и я не могу гарантировать, что я что-то не изменил. Самый простой способ сделать это - просто поместить выбранный вами Ubuntu Lucid на виртуальную машину, проверить скрипт с помощью git clone git://github.com/wavetossed/pybuild.gitи затем запустить скрипт.

После того, как вы его собрали, используйте тарбол в любом последнем дистрибутиве Linux. Есть одна небольшая проблема с перемещением его в каталог, кроме того, /data1/packages/python272что вам нужно запустить включенный, patchelfчтобы установить путь интерпретатора ДО того, как вы переместите каталог. Это влияет на любые двоичные файлы в/data1/packages/python272/bin

Все это основано на сборке с помощью RUNPATH и копировании зависимых разделяемых библиотек. Несмотря на то, что сценарий находится в нескольких файлах, на самом деле это один длинный сценарий оболочки, организованный в стиле каталогов /etc/rc.d.


4
Я не знаю, какая лицензия была в прошлом, но, к сожалению, теперь она не позволяет вам использовать ActivePython на внешних серверах, если вы не купите Business Edition ($$$). activestate.com/compare-editions
Нейт

2
чтобы избежать поломки сервера с помощью диспетчера пакетов, вы полагаетесь на скрипты стороннего провайдера? да
акостадинов

26

Не нужно делать вкусняшку или делать свой собственный RPM. Сборка python26из исходников.

wget https://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz
tar -zxvf Python-2.6.6.tgz
cd Python-2.6.6
./configure && make && make install

Может быть ошибка использования зависимости

yum install gcc cc

Добавьте путь установки ( /usr/local/bin/pythonпо умолчанию) в ~/.bash_profile.

Он не сломается yumни от каких других вещей, от которых зависит python24.


1
Примечание. Для этого требуется компилятор AC. Не похоже, что один из них поставляется с CentOS 5 (по крайней мере, у меня его нет в PATH)
Cody S

./configure && make && make alt install ( toomuchdata.com/2014/02/16/how-to-install-python-on-centos )
luismartingil

24

Нет и все. Возможно, вы захотите убедиться, что у вас установлены все необязательные заголовки библиотеки, чтобы вам не пришлось перекомпилировать ее позже. Думаю, они перечислены в документации.

Кроме того, вы можете установить его даже по стандартному пути, если вы это сделаете make altinstall. Таким образом, он не переопределит ваш текущий "питон" по умолчанию.


4
wget python.org/ftp/python/2.6.6/Python-2.6.6.tgz затем ./configure them make altinstall
Olivier Refalo

12

Крис Ли предоставляет YUM-репозиторий для RPM-пакетов python26, которые могут сосуществовать с «родным» 2.4, необходимым для многих инструментов администрирования в CentOS.

Краткие инструкции, которые сработали, по крайней мере, для меня:

$ sudo rpm -Uvh http://yum.chrislea.com/centos/5/i386/chl-release-5-3.noarch.rpm
$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CHL
$ sudo yum install python26
$ python26

3
Это не работало под CentOS 5.4: пакет python26 недоступен.
Джозеф Туриан,


3

Когда вы устанавливаете свою версию python (в данном случае это python2.6), выполните эту команду, чтобы создать virtualenv:

virtualenv -p /usr/bin/python2.6 /your/virtualenv/path/here/

2

Поздно к вечеринке, но OP должен был пойти с Buildout или Virtualenv и полностью обойти проблему.

В настоящее время я работаю над сервером Centos, ну, трудолюбие было бы подходящим термином, и я могу заверить всех, что единственный способ, которым я могу сдержать слезы, используя программные эквиваленты огнестойких копий, - это наращивание.


2
Можете ли вы использовать virtualenv для установки python2.6, когда установлен только python2.4?
Коллин Андерсон

Безусловно. Я считаю, что используйте параметр --no-site-packages в virtualenv или создайте python в buildout.
chiggsy

НЕТ, virtualenv имеет дело только с модулями / пакетами Python и их версиями. Его по-прежнему нужно указать на рабочий двоичный файл интерпретатора Python (уже в системе).
Джейсон Антман



1
rpm -Uvh http://yum.chrislea.com/centos/5/i386/chl-release-5-3.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CHL
rpm -Uvh ftp://ftp.pbone.net/mirror/centos.karan.org/el5/extras/testing/i386/RPMS/libffi-3.0.5-1.el5.kb.i386.rpm
yum install python26
python26

для тех, кто просто не знает: =)


1
# yum groupinstall "Development tools"
# yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

Загрузите и установите Python 3.3.0

# wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2
# tar xf Python-3.3.0.tar.bz2
# cd Python-3.3.0
# ./configure --prefix=/usr/local
# make && make altinstall

Загрузите и установите Distribute for Python 3.3

# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.35.tar.gz
# tar xf distribute-0.6.35.tar.gz
# cd distribute-0.6.35
# python3.3 setup.py install

Установите и используйте virtualenv для Python 3.3

# easy_install-3.3 virtualenv
# virtualenv-3.3 --distribute otherproject

New python executable in otherproject/bin/python3.3
Also creating executable in otherproject/bin/python
Installing distribute...................done.
Installing pip................done.

# source otherproject/bin/activate
# python --version
Python 3.3.0

0

Я удалил исходную версию python (2.6.6) и установил 2.7 (с опцией make && make altinstall), но когда я попытался установить что-то с yum, не сработало.

Итак, я решил эту проблему следующим образом:

  1. # ln -s /usr/local/bin/python /usr/bin/python
  2. Загрузите RPM-пакет python-2.6.6-36.el6.i686.rpm с http://rpm.pbone.net/index.php3/stat/4/idpl/20270470/dir/centos_6/com/python-2.6. 6-36.el6.i686.rpm.html
  3. Выполнить как root rpm -Uvh python-2.6.6-36.el6.i686.rpm

Выполнено


-1

Введите следующие команды на терминале, чтобы установить Python 3.6 на CentOS 7:

$ sudo yum install https://centos7.iuscommunity.org/ius-release.rpm

Затем сделайте:

$ sudo yum install python36u 

Вы также можете установить любую версию вместо 3.6 (если хотите), просто заменив 36 на свой номер версии.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.