Python 3 auf RHEL installieren


128

Ich versuche, Python3 mit den folgenden Schritten auf RHEL zu installieren:

yum search python3

Welches kehrte zurück No matches found for: python3

Gefolgt von:

yum search python

Keines der Suchergebnisse enthielt python3. Was soll ich als nächstes versuchen?


Ich vermute, dass RHEL Python 3 noch nicht enthält. Möglicherweise können Sie ein für Fedora erstelltes
Thomas K

Sie können auch immer von der Quelle installieren.
Dougal

Ich notiere hier nur die EPEL-Überprüfungsanforderung für Python 3.4: bugzilla.redhat.com/show_bug.cgi?id=1219411 Sobald dies behoben ist, werde ich (oder jemand anderes) eine neue Antwort mit den EPEL-Details veröffentlichen.
Ncoghlan

2
Samuel Phans Antwort mit Community Yum Repos ist aus genau den von Samuel angegebenen Gründen besser als das Bauen aus der Quelle. Sie sollten die akzeptierte Antwort in seine ändern.
Edward Ned Harvey

Antworten:


186

Es ist einfach, es manuell zu installieren:

  1. Download (möglicherweise gibt es neuere Versionen auf Python.org ):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. Entpacken

    $ tar xf Python-3.* 
    $ cd Python-3.*
  3. Kompilierung vorbereiten

    $ ./configure
  4. Bauen

    $ make
  5. Installieren

    $ make install

    ODER wenn Sie die pythonausführbare Datei nicht überschreiben möchten (sicherer, zumindest in einigen Distributionen yummuss python2.x sein, z. B. für RHEL6), können Sie sie python3.*als gleichzeitige Instanz auf dem Systemstandard installieren mit altinstall:

    $ make altinstall

Wenn Sie nun ein alternatives Installationsverzeichnis wünschen, können Sie es --prefixan den configureBefehl übergeben.

Beispiel: Für die 'Installation' von Python in / opt / local fügen Sie einfach hinzu --prefix=/opt/local.

Nach dem make installSchritt: Um Ihre neue Python - Installation zu verwenden, es könnte sein, dass Sie immer noch die [prefix] / ist zu dem hinzufügen müssen $PATHund [prefix] / lib auf den $LD_LIBRARY_PATH(abhängig von dem --prefixSie bestanden)


9
Sie haben verwendet: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Dies ist auch eine einfachere Möglichkeit: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja

1
Ich habe eine 301 (umgezogen) in eine 404 bekommen, als ich den bz2 Teer benutzt habe. Ich habe es in .tgz geändert und es wurde gut heruntergeladen.
Caleb

2
Und für mich hieß die resultierende Binärdatei python3.5 und lebt hier: [root @ machine python3.5] # which python3.5 /usr/local/bin/python3.5 Vielleicht möchten Sie diesem Namen einen Symlink hinzufügen Python3 für die Bequemlichkeit
Will

6
Wenn Sie einen no acceptable C compiler found in $PATH when installing pythonHinweis auf http://stackoverflow.com/questions/19816275/no-acceptable-c-compiler-found-in-path-when-installing-python
bnu

3
./configure --with-ensurepip=installzu aktivieren pip3, oder Sie haben pip3nach der Kompilierung nicht installiert.
Searene

238

Die Installation von RPM ist im Allgemeinen besser, weil:

  • Sie können python3 (ordnungsgemäß) installieren und deinstallieren .
  • Die Installationszeit ist viel schneller . Wenn Sie in einer Cloud-Umgebung mit mehreren VMs arbeiten, ist das Kompilieren von Python3 auf jeder VM nicht zulässig.

Lösung 1: Red Hat & EPEL-Repositorys

Red Hat hat über das EPEL- Repository Folgendes hinzugefügt :

  • Python 3.4 für CentOS 6
  • Python 3.6 für CentOS 7

[EPEL] So installieren Sie Python 3.4 unter 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

Sie können Ihre virtuelle Umgebung erstellen mit pyvenv:

pyvenv /tmp/foo

[EPEL] So installieren Sie Python 3.6 unter CentOS 7

Mit CentOS7 pip3.6wird als Paket geliefert :)

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

Sie können Ihre virtuelle Umgebung erstellen mit pyvenv:

python3.6 -m venv /tmp/foo

Wenn Sie das pyvenvSkript verwenden, erhalten Sie eine WARNUNG:

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

Lösung 2: IUS Community-Repositorys

Die IUS-Community bietet einige aktuelle Pakete für RHEL & CentOS . Die Jungs dahinter sind von Rackspace, also denke ich, dass sie ziemlich vertrauenswürdig sind ...

https://ius.io/

Überprüfen Sie hier das richtige Repo für Sie:

https://ius.io/setup

[IUS] So installieren Sie Python 3.6 unter CentOS 6

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

Sie können Ihre virtuelle Umgebung erstellen mit pyvenv:

python3.6 -m venv /tmp/foo

[IUS] So installieren Sie Python 3.6 unter CentOS 7

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

Sie können Ihre virtuelle Umgebung erstellen mit pyvenv:

python3.6 -m venv /tmp/foo

1
Die URL des IUS-Release-Pakets wurde korrigiert. Sie haben die Version aktualisiert, das ist alles. Wenn sie das Paket erneut aktualisieren, können Sie den Link zu ihrem RPM auf der Webseite überprüfen.
Samuel Phan

1
Wie gesagt, der Link in Ihrer Antwort enthält nicht druckbare Unicode-Zeichen. Wenn ich Ihren Link kopiere / einfüge, sehe ich Folgendes in 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 Hier ist das Unicode-Zeichen: fileformat.info/info/unicode/char/200c/index.htm Die URL in meiner ursprünglichen Antwort funktioniert. Ich habe sie gerade getestet es.
Samuel Phan

1
Mir wurde gesagt, dass das IUS-Community-Repository nicht so zuverlässig ist wie Software-Sammlungen, daher würde ich Mike Guerettes Antwort auf CentOS 6
bformet

2
Wie würden Sie dann mit dieser Lösung pip für python34 installieren?
Loïc

1
Sehr gute Frage, dazu habe ich einen Kommentar hinzugefügt. Es ist das Beste, was ich gefunden habe. Wenn Sie sich an die RPM-basierte Installation halten möchten, sollten Sie IUS-Repositorys für CentOS 7 verwenden python34u-pip.
Samuel Phan

31

Zusätzlich zu Geccos Antwort würde ich Schritt 3 ändern von:

./configure

zu:

./configure --prefix=/opt/python3

Nach der Installation können Sie dann auch:

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

Es soll sichergestellt werden, dass die Installation nicht mit Python in Konflikt steht, das mit yum installiert wurde.

Siehe Erklärung, die ich im Internet gefunden habe:

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


16
Warum /opt? /usr/localexistiert speziell für diesen Zweck und dort wird es ./configureohne explizite --prefixPlatzierung platziert.
Cababunga

@cababunga Während ich schrieb, wurde ich durch das Lesen des Tutorials von einer bestimmten Site beeinflusst. Trotzdem kann die Installation von Python auf die oben beschriebene Weise verwendet werden - es wäre viel einfacher, es zu deinstallieren (es sieht so aus, als ob das Deinstallationsziel für make nicht bereitgestellt wird). Sie können auch problemlos verschiedene Versionen von python3 in bestimmten separaten Verzeichnissen unter / opt installieren und manuell festlegen, welche verwendet oder getestet werden soll.
rsc

Möglicherweise möchten Sie Ihren PATH auch so einrichten, dass er den Binärordner enthält. Für mich war esexport PATH=$PATH:/opt/python3/bin
Caleb

10

Neben Python 2.7 und 3.3 enthält Red Hat Software Collections jetzt auch Python 3.4 - alle funktionieren sowohl mit RHEL 6 als auch mit RHEL 7.

RHSCL 2.0-Dokumente finden Sie unter https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/

Plus viele Artikel bei developerblog.redhat.com.

bearbeiten

Befolgen Sie diese Anweisungen , um Python 3.4 unter RHEL 6/7 oder CentOS 6/7 zu installieren:

# 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

//, Erfordert dies nicht, dass wir eine spezielle Shell aktivieren? In Kombination mit virtuellen Umgebungen kann ich sehen, dass dies zu einem Schmerz im Arsch wird.
Nathan Basanese

//, Warum erfordert das scl enable rh-python34 bash? Was sind die Implikationen für die spätere Verwendung?
Nathan Basanese

Gibt es eine Möglichkeit, python3.5 auf RedHat 6 zu installieren? Ich habe es versucht wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, aber es wurde nicht gefunden.
Searene

Sie müssen sich anmelden, um die Sammlungen zu erhalten? Wie viel kostet das?
Noumenon

1
Es fallen keine zusätzlichen Kosten an. RH Software Collections sind Teil aller RHEL-Entwicklerabonnements und der meisten RHEL-Abonnements. Kostenlose RHEL-Entwicklungsabonnements erhalten Sie unter developer.redhat.com/download. Dies sind echte RHEL-Abonnements - alle dieselben Bits wie Produktionsberechtigungen -, die jedoch zu Entwicklungszwecken dienen.
Mike Guerette

9

Verwenden Sie die SCL-Repos.

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

(Dieser letzte Befehl muss jedes Mal ausgeführt werden, wenn Sie Python27 anstelle des Systemstandards verwenden möchten.)


4
Nachdem ich die Redhat-Dokumente gelesen hatte, musste ich entweder etwas tun; scl enable python33 bashum eine neue Shell zu starten, die für Python 3 aktiviert wird oder scl enable python33 'python hello.py'die Ihre Python-Datei mit Python 3 in der aktuellen Shell
ausführt

//, Welche allgemeineren Anweisungen würden auch die Installation von Python 3.4 ermöglichen?
Nathan Basanese

Wenn Sie RHEL verwenden, verwenden Sie Red Hat Software-Sammlungen : subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Dann kannst du yum install rh-python36. Siehe Wie Python installiert 3 auf RHEL für weitere Informationen.
Rob T.


9

Sie können eine Quelle RPMs und Binär - RPMs für RHEL6 / CentOS6 Download von hier

Dies ist ein Backport von der neuesten Fedora-Entwicklungsquelle RPM zu RHEL6 / CentOS6


Das ist großartig. Danke für deine Mühe, Florian. Vielleicht würde das Ausführen createrepodieser Verzeichnisse sie für manche Menschen noch nützlicher machen.
Cababunga

Was für eine Erleichterung. Die Drehzahl ist perfekt installiert.
Lyomi

//, Wie erstellen wir aus diesem Link ein Repository?
Nathan Basanese

//, ich kann bestätigen, dass dies funktioniert. Momentbaseurl
mal

6

Ich sehe alle Antworten darin, entweder Python3 aus Code zu kompilieren oder das binäre RPM-Paket zu installieren. Hier ist eine weitere Antwort, um EPEL (Extra Packages for Enterprise Linux) zu aktivieren und dann Python mit yum zu installieren. Schritte für 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

Siehe auch Link


Funktioniert gut, besonders wenn der offizielle Weg durch SCL nicht funktioniert. Ergänzen Sie dann die Installation von pip3:sudo yum install python34-setuptools
OSP

5

Ich hatte das gleiche Problem mit Python 2.7. Führen Sie die folgenden Schritte aus, um ein erfolgreiches Upgrade auf 3.6 durchzuführen. Sie können auch versuchen, diese-

  1. Siehe vor dem Upgrade der Version ist 2.x.

    python --version
    Python 2.7.5
  2. Verwenden Sie den folgenden Befehl, um Ihre Python auf die Version 3.x zu aktualisieren.

    yum installiere python3x

    Ersetzen Sie x durch die gewünschte Versionsnummer.

    dh für die Installation von Python 3.6 ausführen

    yum install python36
  3. Wenn Sie danach diesen Python für Ihre Standardversion festlegen möchten , fügen Sie ihn in der bashrc- Datei hinzu

    vi ~ / .bashrc

    alias python='python3.6'
  4. Führen Sie den Befehl bash aus, um die Einstellungen zu übernehmen

    bash 
  5. Jetzt können Sie die Version unten sehen

    python --version
    Python 3.6.3

Diese Antwort funktioniert nicht, ohne eines der Repos von Drittanbietern, entweder EPEL oder IUS, hinzuzufügen. In RHEL gibt es kein python36-Paket. Das RHSCL-Paket ist rh-python36.
Rob T.

4

Drei Schritte mit Python 3.5 von Software Collections :

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

Beachten Sie, dass sudo für den letzten Befehl nicht benötigt wird. Jetzt können wir sehen, dass Python 3 die Standardeinstellung für die aktuelle Shell ist:

python --version
Python 3.5.1

Überspringen Sie einfach den letzten Befehl, wenn Sie Python 2 als Standard für die aktuelle Shell verwenden möchten.

Nehmen wir nun an, Ihre Python 3-Skripte geben Ihnen einen Fehler wie /usr/bin/env: python3: No such file or directory. Das liegt daran, dass die Installation normalerweise auf einem ungewöhnlichen Pfad erfolgt:

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

Das Obige wäre normalerweise ein Symlink. Wenn Sie beim Start python3automatisch $PATHfür alle Benutzer hinzugefügt werden möchten , können Sie dazu eine Datei wie die folgende hinzufügen:

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

Welches hätte so etwas wie:

#!/bin/bash

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

Und jetzt nach einem Neustart, wenn wir das tun

python3 --version

Es sollte einfach funktionieren. Eine Ausnahme wäre ein automatisch generierter Benutzer wie "jenkins" auf einem Jenkins-Server ohne Shell. In diesem Fall fügen Sie den Pfad manuell hinzu$PATH Skripten eine Möglichkeit.

Wenn Sie sudo pip3Pakete installieren, aber feststellen, dass pip3 nicht gefunden werden kann, haben Sie möglicherweise einen sicheren Pfad in / etc / sudoers . Die Überprüfung mit sudo visudosollte dies bestätigen. So verwenden Sie vorübergehend den Standardpfad, wenn Sie Befehle ausführen, können Sie beispielsweise Folgendes tun:

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

Weitere Informationen finden Sie in dieser Frage.

HINWEIS : Es gibt ein neueres Python 3.6 von Software Collections, aber ich würde es derzeit nicht empfehlen, da ich große Probleme hatte, Pycurl zu installieren. Für Python 3.5 ist das kein Problem, da ich gerade das getan habe, sudo yum install sclo-python35-python-pycurlwas sofort funktioniert hat.


No package centos-release-scl available.
Joe

Es ist im CentOS-Repository verfügbar.
Nagev

4

Wenn Sie RHEL verwenden und ein von Red Hat unterstütztes Python möchten, verwenden Sie Red Hat Software-Sammlungen (RHSCL). Die EPEL- und IUS-Pakete werden von Red Hat nicht unterstützt. Viele der obigen Antworten verweisen auch auf die CentOS-Softwaresammlungen. Sie können diese zwar installieren, sie sind jedoch nicht die von Red Hat unterstützten Pakete für RHEL.

Die am häufigsten gewählte Antwort gibt auch schlechte Ratschläge - Auf RHEL möchten Sie nichts ändern /usr/bin/python, /usr/bin/python2da Sie wahrscheinlich kaputt gehen yumund andere RHEL-Verwaltungstools. Schauen Sie sich an /bin/yum, es ist ein Python-Skript, das mit beginnt #!/usr/bin/python. Wenn Sie Python aus dem Quellcode kompilieren, führen Sie kein make installas als root aus. Das wird überschreiben /usr/bin/python. Wenn Sie kaputt gehen yum, kann es schwierig sein, Ihr System wiederherzustellen.

Weitere Informationen finden Sie unter Installieren von Python 3, pip, venv, virtualenv und pipenv auf RHEL unter developer.redhat.com . Es behandelt die Installation und Verwendung von Python 3 von RHSCL, die Verwendung von Python Virtual Environments sowie eine Reihe von Tipps für die Arbeit mit Software-Sammlungen und die Arbeit mit Python unter RHEL.

Kurz gesagt, um Python 3.6 über Red Hat Software Collections zu installieren:

$ 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

Um eine Software-Sammlung zu verwenden, müssen Sie sie aktivieren:

scl enable rh-python36 bash

Wenn Sie jedoch möchten, dass Python 3 dauerhaft aktiviert ist, können Sie Folgendes zu Ihrem ~ / .bashrc hinzufügen und sich dann abmelden und wieder anmelden. Jetzt ist Python 3 permanent auf Ihrem Weg.

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

Hinweis: Sobald Sie dies getan haben, erhalten Sie durch Eingabe von pythonPython 3.6 anstelle von Python 2.7.

Lesen Sie den obigen Artikel für all dies und viel mehr Details.


3

Wenn Sie offizielle RHEL-Pakete wünschen, können Sie RHSCL (Red Hat Software Collections) verwenden.

Mehr Details:

Sie müssen Zugriff auf das Red Hat-Kundenportal haben, um vollständige Artikel lesen zu können.


//, Nur positiv bewertet. Wären Sie bereit, eine Zusammenfassung dessen zu machen, was man tut, um die RHSCL dafür zu verwenden? Dies ist schließlich eine Frage-und-Antwort-Seite.
Nathan Basanese

1
Der Artikel So installieren Sie Python 3 unter RHEL enthält aktuelle Schritte für Python 3.6 über Softwaresammlungen und viele Tipps zum Arbeiten mit RHSCLs, Python und virtuellen Umgebungen.
Rob T.

3

Hier sind die Schritte, die ich zur Installation von Python3 ausgeführt habe:

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
Wenn Sie aus dem Quellcode erstellen, ohne eine Reihe von Abhängigkeiten (SSL, bzip usw.) zu installieren, fehlt eine Reihe von Modulen, die von gemeinsam genutzten Objekten abhängen. Die Installation einer der RPM-basierten Distributionen (RHSCL, EPEL oder IUS) ist eine bessere Idee
Rob T.

1

yum install python34.x86_64funktioniert, wenn Sie epel-releaseinstalliert haben, was in dieser Antwort erklärt wird, und ich habe bestätigt, dass es funktioniert hatRHEL 7.3

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

$ type python3
python3 is hashed (/usr/bin/python3)

1

Für RHEL unter Amazon Linux musste ich mit python3 Folgendes tun:

sudo yum install python34-devel


1
No package python34-devel available.
Joe

1

Voll funktionsfähig 36, wenn SCL nicht verfügbar ist (basierend auf Joys Eingabe)

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

Aktivieren Sie endlich die Umgebung ...

pyvenv-3.6 py3
source py3/bin/activate

Dann python3


0

Sie können miniconda installieren ( https://conda.io/miniconda.html ). Das ist etwas mehr als nur Python 3.7, aber die Installation ist sehr einfach und unkompliziert.

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

Sie müssen die Lizenzvereinbarung akzeptieren und einige Optionen im interaktiven Modus auswählen (Standardeinstellungen akzeptieren). Ich glaube, es kann auch irgendwie leise installiert werden.


Konnte danach keinen tatsächlichen pythonBefehl finden , ist er verpackt?
Mugen

0

Aktivieren Sie für Benutzer von AWS EC2 RHEL 7.5 ( verwenden Sie sudo ) die erforderlichen Repos

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

Installieren Sie Python 3.6

yum install rh-python36

Installieren Sie andere Abhängigkeiten

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.