Встановлення 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

2
Відповідь Самюеля Фана, використовуючи спільноту yum repos, краща, ніж побудова з джерела, саме з тих причин, які він заявив. Вам слід змінити прийняту відповідь на його.
Едвард Нед Харві

Відповіді:


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, можливо, вам доведеться все-таки додати [префікс] / бін до $PATHі [префікс] / lib до $LD_LIBRARY_PATH(залежно від --prefixпройденого)


9
Ви використовували: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Це також простіший позитив: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja

1
Я отримав 301 (переміщений) у 404 під час використання дьогтю bz2. Я змінив його на .tgz, і він прекрасно завантажився.
Калеб

2
А для мене отриманий двійковий файл отримав назву python3.5 і живе тут: [root @ machine python3.5] # which python3.5 /usr/local/bin/python3.5 Отже, ви можете додати символьне посилання до цього імені python3 для зручності
Will

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
липня 16-16

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
Як я вже сказав, посилання у вашій відповіді містить символи unicode, які не можна друкувати. Коли я копіюю / вставляю ваше посилання, ось що я бачу у 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 Ось символ Unicode: fileformat.info/info/unicode/char/200c/index.htm URL-адреса в моїй оригінальній відповіді працює, я щойно перевірив це.
Семюель Фан

1
Мені сказали, що сховище спільноти IUS не настільки надійне, як колекції програмного забезпечення, тому я б пішов з відповіддю Майка Герета на CentOS 6
bformet

2
Використовуючи це рішення, як би ви потім встановили pip для python34?
Loïc

1
Дуже хороше запитання, я до цього додав коментар. Це найкраще, що я знайшов. Якщо ви хочете дотримуватися встановлення на основі RPM, вам слід використовувати сховища IUS для CentOS 7. Вони надають a 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


16
Чому /opt? /usr/localспеціально існує для цієї мети, і саме там, де ./configureявна інформація не --prefixбуде розміщена.
кабабунга

@cababunga Як я писав, на мене вплинуло читання підручника з вказаного сайту. Тим не менш, встановлення python вище способом може бути корисним - видалити його буде набагато простіше (схоже, видалення цілі для make не передбачено). Також ви можете легко встановити різні версії python3 у визначених окремих каталогах під / opt та вручну встановити, яку саме використовувати або тестувати.
rsc

Ви також можете налаштувати свій PATH, щоб він містив папку бінарних файлів. Для мене це булоexport PATH=$PATH:/opt/python3/bin
Калеб

10

Поряд з Python 2.7 та 3.3, колекція програм Red Hat тепер включає 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 - все ті ж біти, що й права виробництва - але призначені для розвитку.
Майк Геретт

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


//, Що таке затримка? Pip здається простим шляхом.
Натан Басанес

9

Ви можете завантажити вихідні RPM та бінарні RPM для RHEL6 / CentOS6 звідси

Це підтримка від найновішого джерела розширення Fedora rpm до RHEL6 / CentOS6


Це чудово. Дякую за ваші зусилля, Флоріане. Можливо, робота createrepoнад цими довідниками зробить їх ще кориснішими для деяких людей.
кабабунга

Яке полегшення. обертів встановлено ідеально.
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 встановити тоді: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

    замініть х потрібним номером версії.

    тобто для установки python 3.6 Execute

    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 від колекції програмного забезпечення :

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 неможливо знайти, можливо, у вас є захищений шлях у / etc / sudoers . Перевірка за допомогою sudo visudoмає підтвердити це. Щоб тимчасово використовувати стандартний PATH під час виконання команд, ви можете:

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

Дивіться це питання для більш детальної інформації.

ПРИМІТКА : Існує новіший Python 3.6 від колекцій програмного забезпечення, але наразі я не рекомендував би його, тому що у мене були головні болі при спробі встановити Pycurl. Для Python 3.5 це не проблема, тому що я щойно робив те, sudo yum install sclo-python35-python-pycurlщо вийшло з коробки.


No package centos-release-scl available.
Джо,

Він доступний у сховищі CentOS.
Нагев

4

Якщо ви перебуваєте на RHEL і хочете підтримувати Red Hat Python, використовуйте колекції 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корінь. Це буде перезаписано /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 Collection:

$ 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)

Детальніше:

Ви повинні мати доступ до Порталу клієнтів Red Hat, щоб прочитати всі статті.


//, Щойно підкріплений. Чи бажаєте ви зробити короткий підсумок того, що робити для використання 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 тощо), вам не вистачить кількох модулів, які залежать від спільних об'єктів. Встановлення одного з обертових розподілів (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)


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


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

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


Після цього не вдалося знайти фактичну pythonкоманду, вона загорнута?
Муген

0

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

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.