Установка Python 3 на RHEL

128

Я пытаюсь установить python3 на RHEL, выполнив следующие действия:

yum search python3

Который вернулся No matches found for: python3

С последующим:

yum search python

Ни один из результатов поиска не содержал python3. Что мне попробовать дальше?

Чандер Шивдасани
источник
Я подозреваю, что RHEL еще не включает Python 3. Вы можете установить RPM, созданный для Fedora: admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K
Вы также всегда можете установить из исходников.
Дугал
Просто обратите внимание на запрос EPEL на проверку Python 3.4 здесь: bugzilla.redhat.com/show_bug.cgi?id=1219411 Как только это будет решено, я (или кто-то другой) опубликую новый ответ с подробностями EPEL.
ncoghlan 01
2
Ответ Самуэля Фана с использованием репозиториев yum сообщества лучше, чем сборка из исходного кода, именно по причинам, указанным Самуэлем. Вы должны изменить принятый ответ на его.
Эдвард Нед Харви

Ответы:

186

Установить его вручную несложно:

  1. Скачать (на Python.org могут быть более новые версии ):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. расстегнуть молнию

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. Подготовить компиляцию

    $ ./configure
  4. Сложение

    $ make
  5. устанавливать

    $ make install

    ИЛИ, если вы не хотите перезаписывать pythonисполняемый файл (безопаснее, по крайней мере, на некоторых дистрибутивах yumдолжен pythonбыть 2.x, например, для RHEL6) - вы можете установить python3.*как параллельный экземпляр в систему по умолчанию с altinstall:

    $ make altinstall

Теперь, если вам нужен альтернативный каталог для установки, вы можете перейти --prefixк configureкоманде.

Пример: для «установки» Python в / opt / local просто добавьте --prefix=/opt/local.

После make installшага: Чтобы использовать новую установку Python, возможно, вам все равно придется добавить [префикс] / bin в $PATHи [префикс] / lib в $LD_LIBRARY_PATH(в зависимости от того, что --prefixвы передали)

GECCO
источник
9
Вы использовали: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Это также более простая возможность: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja 09
1
Я получил 301 (переехал) в 404 при использовании tar bz2. Я изменил его на .tgz, и он отлично загрузился.
Калеб
2
И для меня полученный двоичный файл был назван python3.5 и находится здесь: [root @ machine python3.5] # which python3.5 /usr/local/bin/python3.5 Итак, вы можете добавить символическую ссылку на это имя python3 для удобства
Будет
6
если вы no acceptable C compiler found in $PATH when installing pythonобратитесь к http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
bnu
3
./configure --with-ensurepip=installдля включения pip3, иначе вы не pip3установите его после компиляции.
Searene
238

Установка из RPM обычно лучше, потому что:

  • вы можете установить и удалить (правильно) python3.
  • время установки намного быстрее . Если вы работаете в облачной среде с несколькими виртуальными машинами, компиляция python3 на каждой виртуальной машине неприемлема.

Решение 1. Репозитории Red Hat и EPEL

Red Hat добавила через репозиторий EPEL :

  • Python 3.4 для CentOS 6
  • Python 3.6 для CentOS 7

[EPEL] Как установить Python 3.4 на CentOS 6

sudo yum install -y epel-release
sudo yum install -y python34

# Install pip3
sudo yum install -y python34-setuptools  # install easy_install-3.4
sudo easy_install-3.4 pip

Вы можете создать свой virtualenv, используя pyvenv:

pyvenv /tmp/foo

[EPEL] Как установить Python 3.6 на CentOS 7

С CentOS7 pip3.6предоставляется как пакет :)

sudo yum install -y epel-release
sudo yum install -y python36 python36-pip

Вы можете создать свой virtualenv, используя pyvenv:

python3.6 -m venv /tmp/foo

Если вы воспользуетесь pyvenvскриптом, вы получите ВНИМАНИЕ:

$ pyvenv-3.6 /tmp/foo
WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

Решение 2. Репозитории сообщества IUS

Сообщество IUS предоставляет несколько последних пакетов для RHEL и CentOS . Ребята из Rackspace, так что я считаю, что они заслуживают доверия ...

https://ius.io/

Проверьте подходящее репо здесь:

https://ius.io/setup

[IUS] Как установить Python 3.6 на CentOS 6

sudo yum install -y https://repo.ius.io/ius-release-el6.rpm
sudo yum install -y python36u python36u-pip

Вы можете создать свой virtualenv, используя pyvenv:

python3.6 -m venv /tmp/foo

[IUS] Как установить Python 3.6 на CentOS 7

sudo yum install -y https://repo.ius.io/ius-release-el7.rpm
sudo yum install -y python36u python36u-pip

Вы можете создать свой virtualenv, используя pyvenv:

python3.6 -m venv /tmp/foo
Самуэль Фан
источник
1
Исправлен URL-адрес пакета выпуска IUS. обновили версию, вот и все. Если они снова обновят пакет, вы можете проверить ссылку на их RPM на веб-странице.
Самуэль Фан
1
Как я уже сказал, ссылка в вашем ответе содержит непечатаемые символы Юникода. Когда я копирую / вставляю вашу ссылку, вот что я вижу в VIM: https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/iu<200c><200b>s-release-1.0-14.iu‌​s.centos6.noarch.rpm Вот символ Юникода : fileformat.info/info/unicode/char/200c/index.htm URL-адрес в моем исходном ответе работает, я только что протестировал Это.
Сэмюэл Фан
1
Мне сказали, что репозиторий сообщества IUS не так надежен, как коллекции программного обеспечения, поэтому я бы согласился с ответом Майка Геретта на CentOS 6
bformet
2
Используя это решение, как бы вы затем установили pip для python34?
Loïc
1
Очень хороший вопрос, я добавил к нему комментарий. Это лучшее, что я нашел. Если вы хотите придерживаться установки на основе RPM, вам следует использовать репозитории IUS для CentOS 7. Они предоставляют python34u-pip.
Самуэль Фан
31

В дополнение к ответу gecco я бы изменил шаг 3 с:

./configure

чтобы:

./configure --prefix=/opt/python3

Затем после установки вы также можете:

# ln -s /opt/python3/bin/python3 /usr/bin/python3

Это необходимо для того, чтобы установка не конфликтовала с python, установленным с помощью yum.

См. Объяснение, которое я нашел в Интернете:

http://www.hosting.com/support/linux/installing-python-3-on-centosredhat-5x-from-source

RSC
источник
16
Почему /opt? /usr/localспециально существует для этой цели, и именно там ./configureбез явного --prefixего размещения.
cababunga
@cababunga Как я уже писал, на меня повлияло чтение учебника с указанного сайта. Тем не менее, установка python описанным выше способом может быть полезной - было бы намного проще удалить его (похоже, цель удаления для make не предусмотрена). Также вы можете легко установить различные версии python3 в указанные отдельные каталоги в / opt и вручную указать, какой из них использовать или тестировать.
rsc
Вы также можете настроить PATH, чтобы он содержал папку двоичных файлов. Для меня это былоexport PATH=$PATH:/opt/python3/bin
Калеб
10

Наряду с Python 2.7 и 3.3, Red Hat Software Collections теперь включает Python 3.4 - все работает как на RHEL 6, так и на 7.

Документы RHSCL 2.0 находятся по адресу https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/.

Плюс много статей на developerblog.redhat.com.

редактировать

Следуйте этим инструкциям, чтобы установить Python 3.4 на RHEL 6/7 или CentOS 6/7:

# 1. Install the Software Collections tools:
yum install scl-utils

# 2. Download a package with repository for your system.
#  (See the Yum Repositories on external link. For RHEL/CentOS 6:)
wget https://www.softwarecollections.org/en/scls/rhscl/rh-python34/epel-6-x86_64/download/rhscl-rh-python34-epel-6-x86_64.noarch.rpm
#  or for RHEL/CentOS 7
wget https://www.softwarecollections.org/en/scls/rhscl/rh-python34/epel-7-x86_64/download/rhscl-rh-python34-epel-7-x86_64.noarch.rpm

# 3. Install the repo package (on RHEL you will need to enable optional channel first):
yum install rhscl-rh-python34-*.noarch.rpm

# 4. Install the collection:
yum install rh-python34

# 5. Start using software collections:
scl enable rh-python34 bash
Майк Геретт
источник
//, разве для этого не требуется включение специальной оболочки? В сочетании с virtualenvs я вижу, что это становится занозой в заднице.
Натан Басанезе
//, зачем это нужно scl enable rh-python34 bash? Каковы последствия использования этого в дальнейшем?
Натан Басанезе,
Есть ли способ установить python3.5 на RedHat 6? Я пробовал wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, но не нашел.
Searene
Вы должны подписаться, чтобы получать коллекции? Сколько это стоит?
Ноумен
1
Никаких дополнительных затрат. Коллекции программного обеспечения RH являются частью всех подписок разработчиков RHEL и большинства подписок RHEL. Бесплатную подписку на разработку RHEL можно получить на сайте developers.redhat.com/download. Это настоящие подписки RHEL - все те же биты, что и производственные права, - но предназначены для целей разработки.
Mike Guerette
9

Используйте репозитории SCL.

sudo sh -c 'wget -qO- http://people.redhat.com/bkabrda/scl_python33.repo >> /etc/yum.repos.d/scl.repo'
sudo yum install python33
scl enable python27

(Эту последнюю команду придется запускать каждый раз, когда вы захотите использовать python27, а не систему по умолчанию.)

Пол Дрейпер
источник
4
После прочтения документации redhat мне нужно было либо сделать; scl enable python33 bashдля запуска новой оболочки, которая будет включена для python 3 или scl enable python33 'python hello.py'которая будет запускать ваш файл python с использованием python 3 в текущей оболочке
закуски
// Какие более общие инструкции также позволят установить Python 3.4?
Натан Басанезе,
Если вы находитесь на RHEL, использовать коллекции Red Hat Software: subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Тогда ты сможешь yum install rh-python36. См. Как установить Python 3 на RHEL для получения дополнительной информации.
Роб Т.
9

Python3 недавно был добавлен в EPEL7 как Python34.

В настоящее время (в настоящее время) предпринимаются усилия по созданию руководящих принципов по упаковке вещей для Python3 в EPEL7.

См. Https://bugzilla.redhat.com/show_bug.cgi?id=1219411
и https://lists.fedoraproject.org/pipermail/python-devel/2015-July/000721.html.

rkuska
источник
// Что за задержка? Пип кажется простым путем.
Натан Басанезе,
9

Вы можете скачать исходные пакеты RPM и двоичные пакеты RPM для RHEL6 / CentOS6 здесь

Это бэкпорт с новейшего исходного кода разработки Fedora rpm на RHEL6 / CentOS6

Флориан Ла Рош
источник
Замечательно. Спасибо за ваши усилия, Флориан. Может быть, работа createrepoс этими каталогами сделает их еще более полезными для некоторых людей.
cababunga
Какое облегчение. обороты установлены отлично.
Lyomi
//, как сделать репозиторий из этой ссылки?
Натан Басанезе,
//, я могу подтвердить, что это работает. Погодите, я просто быстро придумал что-то, в котором этот URL использовался как baseurl: 0bin.net/paste/…
Натан Басанез
6

Я вижу все ответы как просьбу скомпилировать python3 из кода или установить бинарный пакет RPM. Вот еще один ответ, чтобы включить EPEL (дополнительные пакеты для Enterprise Linux), а затем установить python с помощью yum. Шаги для RHEL 7.5 (Maipo)

yum install wget y
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm ivh epel-*.rpm
yum install python36

Также см. Ссылку

Джей Раджпут
источник
Работает хорошо, особенно если официальный способ через SCL не работает. Дополните pip3 install, затем:sudo yum install python34-setuptools
OSP
5

У меня была такая же проблема с использованием python 2.7. Выполните следующие шаги для успешного обновления до 3.6. Вы также можете попробовать это -

  1. Смотрите перед обновлением до версии 2.x

    python --version
    Python 2.7.5
  2. Используйте команду ниже, чтобы обновить ваш Python до версии 3.x-

    yum установить python3x

    замените x на нужный номер версии.

    т.е. для установки python 3.6 выполнить

    yum install python36
  3. После этого, если вы хотите установить этот питон для своей версии по умолчанию, добавьте в файл bashrc

    vi ~ / .bashrc

    alias python='python3.6'
  4. выполнить команду bash, чтобы применить настройки

    bash 
  5. Теперь вы можете увидеть версию ниже

    python --version
    Python 3.6.3
ИРШАД
источник
Этот ответ не будет работать без добавления одного из сторонних репозиториев EPEL или IUS. В RHEL нет пакета python36. Пакет RHSCL есть rh-python36.
Роб Т.
4

Три шага с использованием Python 3.5 от Software Collections :

sudo yum install centos-release-scl
sudo yum install rh-python35
scl enable rh-python35 bash

Обратите внимание, что для последней команды sudo не требуется. Теперь мы видим, что python 3 по умолчанию используется для текущей оболочки:

python --version
Python 3.5.1

Просто пропустите последнюю команду, если вы предпочитаете использовать Python 2 по умолчанию для текущей оболочки.

Теперь предположим, что ваши скрипты Python 3 выдают ошибку вроде /usr/bin/env: python3: No such file or directory. Это потому, что установка обычно выполняется по необычному пути:

/opt/rh/rh-python35/root/bin/python3

Вышеупомянутое обычно является символической ссылкой. Если вы хотитеpython3 чтобы автоматически добавляли в список $PATHдля всех пользователей при запуске, один из способов сделать это - добавить файл, например:

sudo vim /etc/profile.d/rh-python35.sh

Что-то вроде:

#!/bin/bash

PATH=$PATH:/opt/rh/rh-python35/root/bin/

А теперь после перезагрузки, если сделаем

python3 --version

Это должно просто работать. Единственным исключением может быть автоматически сгенерированный пользователь, такой как "jenkins", на сервере Jenkins, у которого нет оболочки. В этом случае можно было бы вручную добавить путь к $PATHскрипту.

Наконец, если вы используете sudo pip3для установки пакетов, но он сообщает вам, что pip3 не может быть найден, возможно, у вас есть secure_path в / etc / sudoers . Проверка sudo visudoдолжна подтвердить это. Чтобы временно использовать стандартный PATH при запуске команд, вы можете, например:

sudo env "PATH=$PATH" pip3 --version

Смотрите это вопрос для получения более подробной информации.

ПРИМЕЧАНИЕ . Существует более новая версия Python 3.6 от Software Collections, но я бы не рекомендовал ее в настоящее время, потому что у меня были серьезные головные боли при попытке установить Pycurl. Для Python 3.5 это не проблема, потому что я сделал sudo yum install sclo-python35-python-pycurlэто из коробки.

Nagev
источник
No package centos-release-scl available.
Джо
Он доступен в репозитории CentOS.
Nagev 06
4

Если вы используете RHEL и хотите Python, поддерживаемый Red Hat, используйте коллекции Red Hat Software (RHSCL). Пакеты EPEL и IUS не поддерживаются Red Hat. Также многие из приведенных выше ответов указывают на коллекции программного обеспечения CentOS. Вы можете установить их, но они не поддерживаются Red Hat для RHEL.

Кроме того, ответ, получивший наибольшее количество голосов, дает плохой совет - в RHEL вы не хотите менять /usr/bin/python, /usr/bin/python2потому что вы, вероятно, сломаете yumи другие инструменты администратора RHEL. Посмотрите /bin/yum, это сценарий Python, который начинается с #!/usr/bin/python. Если вы компилируете Python из исходного кода, не создавайте файл с make installправами root. Это будет перезаписано /usr/bin/python. Если ты сломаешьсяyum восстановить систему может быть сложно.

Для получения дополнительной информации см. Как установить Python 3, pip, venv, virtualenv и pipenv на RHEL на сайте developers.redhat.com . В нем рассматривается установка и использование Python 3 из RHSCL, использование виртуальных сред Python, а также ряд советов по работе с коллекциями программного обеспечения и работе с Python в RHEL.

Вкратце, чтобы установить Python 3.6 через Red Hat Software Collections:

$ su -
# subscription-manager repos --enable rhel-7-server-optional-rpms \
   --enable rhel-server-rhscl-7-rpms
# yum -y install @development
# yum -y install rh-python36

# yum -y install rh-python36-numpy \
   rh-python36-scipy \ 
   rh-python36-python-tools \
   rh-python36-python-six

Чтобы использовать коллекцию программного обеспечения, вы должны включить ее:

scl enable rh-python36 bash

Однако, если вы хотите, чтобы Python 3 был постоянно включен, вы можете добавить следующее в свой ~ / .bashrc, а затем выйти из системы и снова войти. Теперь Python 3 постоянно на вашем пути.

# Add RHSCL Python 3 to my login environment
source scl_source enable rh-python36

Примечание: как только вы это сделаете, при вводе pythonвы получите Python 3.6 вместо Python 2.7.

См. Статью выше, чтобы узнать обо всем этом и многом другом.

Роб Т.
источник
3

Если вам нужны официальные пакеты RHEL, вы можете использовать RHSCL (Red Hat Software Collections)

Подробнее:

У вас должен быть доступ к клиентскому порталу Red Hat, чтобы читать полные статьи.

Daneel
источник
//, только что проголосовали. Не могли бы вы подвести итог того, что нужно делать, чтобы использовать для этого RHSCL? В конце концов, это сайт вопросов и ответов.
Натан Басанезе,
1
В статье « Как установить Python 3 на RHEL » приведены актуальные шаги для Python 3.6 с помощью коллекций программного обеспечения и множество советов по работе с RHSCL, Python и виртуальными средами.
Роб Т.
3

Вот шаги, которые я выполнил для установки Python3:

yum install wget
wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tar.xz  
sudo tar xvf Python-3.*   
cd Python-3.* 
sudo ./configure --prefix=/opt/python3    
sudo make   
sudo make install   
sudo ln -s /opt/python3/bin/python3 /usr/bin/python3

$ /usr/bin/python3    
Python 3.6.0
Аты
источник
2
Если вы собираете из исходного кода без установки ряда зависимостей -devel (SSL, bzip и т. Д.), Вам будет не хватать ряда модулей, которые зависят от общих объектов. Лучше установить один из дистрибутивов на основе rpm (RHSCL, EPEL или IUS)
Роб Т.
1

yum install python34.x86_64работает, если вы epel-releaseустановили, и этот ответ объясняет, как это сделать, и я подтвердил, что он работал надRHEL 7.3

$ cat /etc/*-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.3 (Maipo)

$ type python3
python3 is hashed (/usr/bin/python3)
amphibient
источник
1

Для RHEL в Amazon Linux с использованием python3 мне пришлось сделать:

sudo yum установить python34-devel

Максим Мартино
источник
1
No package python34-devel available.
Джо
1

Полный рабочий 36, когда SCL недоступен (на основе ввода Joys)

yum install wget y
wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
rpm ivh epel-*.rpm
yum install python36

sudo yum install python34-setuptools
sudo mkdir /usr/local/lib/python3.6
sudo mkdir /usr/local/lib/python3.6/site-packages

sudo easy_install-3.6 pip

Наконец активируйте окружение ...

pyvenv-3.6 py3
source py3/bin/activate

Тогда python3

OSP
источник
0

Вы можете установить miniconda ( https://conda.io/miniconda.html ). Это немного больше, чем просто Python 3.7, но установка очень проста и понятна.

curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O
sudo yum install bzip2
bash Miniconda3-latest-Linux-x86_64.sh

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

grabantot
источник
pythonПосле этого не удалось найти настоящую команду, она завернута?
Mugen
0

Для тех, кто работает с AWS EC2 RHEL 7.5, ( используйте sudo ) включите необходимые репозитории

yum-config-manager --enable rhui-REGION-rhel-server-optional
yum-config-manager --enable rhui-REGION-rhel-server-rhscl

Установите Python 3.6

yum install rh-python36

Установить другие зависимости

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
ВАСУ
источник