Instalowanie Pythona 3 na RHEL

128

Próbuję zainstalować python3 na RHEL, wykonując następujące kroki:

yum search python3

Który wrócił No matches found for: python3

Śledzony przez:

yum search python

Żaden z wyników wyszukiwania nie zawierał python3. Co powinienem spróbować dalej?

Chander Shivdasani
źródło
Podejrzewam, że RHEL nie zawiera jeszcze Pythona 3. Możesz zainstalować RPM skompilowany dla Fedory: admin.fedoraproject.org/pkgdb/acls/name/python3
Thomas K,
Możesz także zawsze zainstalować ze źródła.
Dougal
Odnotowując tylko prośbę o sprawdzenie EPEL dla Pythona 3.4 tutaj: bugzilla.redhat.com/show_bug.cgi?id=1219411 Po rozwiązaniu problemu ja (lub ktoś inny) opublikuję nową odpowiedź ze szczegółami EPEL.
ncoghlan
2
Odpowiedź Samuela Phana za pomocą społecznościowych repozytoriów yum jest lepsza niż budowanie ze źródła, z dokładnie tych powodów, które podał Samuel. Powinieneś zmienić zaakceptowaną odpowiedź na jego.
Edward Ned Harvey

Odpowiedzi:

186

Łatwo jest zainstalować go ręcznie:

  1. Pobierz (mogą być nowsze wersje na Python.org ):

    $ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz
  2. Rozsunąć suwak

    $ tar xf Python-3.* 
    $ cd Python-3.*
    
  3. Przygotuj kompilację

    $ ./configure
  4. Budować

    $ make
  5. zainstalować

    $ make install

    LUB jeśli nie chcesz nadpisywać pythonpliku wykonywalnego (bezpieczniej, przynajmniej w niektórych dystrybucjach yummusi pythonbyć 2.x, na przykład dla RHEL6) - możesz zainstalować python3.*jako współbieżną instancję domyślną systemu z altinstall:

    $ make altinstall

Teraz, jeśli chcesz alternatywnego katalogu instalacyjnego, możesz przejść --prefixdo configurepolecenia.

Przykład: aby „zainstalować” Pythona w / opt / local, po prostu dodaj --prefix=/opt/local.

Po make installkroku: Aby użyć nowej instalacji Pythona, może się zdarzyć, że nadal będziesz musiał dodać [przedrostek] / bin do $PATHi [przedrostek] / lib do $LD_LIBRARY_PATH(w zależności od --prefixpodanego)

gecco
źródło
9
Użyłeś: bzip2 -cd Python-3.2.2.tar.bz2 | tar xvf - Jest to również prostsza możliwość: tar jxvf Python-3.2.2.tar.bz2
rajadhiraja
1
Mam 301 (przeniesiony) do 404 podczas używania tar bz2. Zmieniłem go na .tgz i ściągnął dobrze.
Caleb
2
Dla mnie wynikowy plik binarny został nazwany python3.5 i znajduje się tutaj: [root @ machine python3.5] # który python3.5 /usr/local/bin/python3.5 Więc możesz dodać dowiązanie symboliczne do tego nazwanego python3 dla wygody
będzie
6
jeśli otrzymasz no acceptable C compiler found in $PATH when installing python
odsyłacz
3
./configure --with-ensurepip=installaby włączyć pip3, inaczej nie będziesz pip3instalować po kompilacji.
Searene
238

Instalacja z RPM jest generalnie lepsza, ponieważ:

  • możesz zainstalować i odinstalować (poprawnie) python3.
  • czas instalacji jest o wiele szybciej . Jeśli pracujesz w środowisku chmurowym z wieloma maszynami wirtualnymi, kompilowanie języka Python3 na każdej z maszyn wirtualnych jest niedopuszczalne.

Rozwiązanie 1: repozytoria Red Hat i EPEL

Red Hat dodał poprzez repozytorium EPEL :

  • Python 3.4 dla CentOS 6
  • Python 3.6 dla CentOS 7

[EPEL] Jak zainstalować Python 3.4 na 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

Możesz stworzyć swój virtualenv używając pyvenv:

pyvenv /tmp/foo

[EPEL] Jak zainstalować Python 3.6 na CentOS 7

Z CentOS7 pip3.6jest dostarczany jako pakiet :)

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

Możesz stworzyć swój virtualenv używając pyvenv:

python3.6 -m venv /tmp/foo

Jeśli użyjesz pyvenvskryptu, otrzymasz OSTRZEŻENIE:

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

Rozwiązanie 2: repozytoria społeczności IUS

Społeczność IUS zapewnia kilka aktualnych pakietów dla RHEL i CentOS . Faceci za nim są z Rackspace, więc myślę, że są całkiem godni zaufania ...

https://ius.io/

Sprawdź tutaj odpowiednie repozytorium:

https://ius.io/setup

[IUS] Jak zainstalować Python 3.6 na CentOS 6

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

Możesz stworzyć swój virtualenv używając pyvenv:

python3.6 -m venv /tmp/foo

[IUS] Jak zainstalować Python 3.6 na CentOS 7

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

Możesz stworzyć swój virtualenv używając pyvenv:

python3.6 -m venv /tmp/foo
Samuel Phan
źródło
1
Poprawiono adres URL pakietu wydania IUS. zaktualizowali wersję, to wszystko. Jeśli ponownie zaktualizują pakiet, możesz sprawdzić łącze do ich RPM na stronie internetowej.
Samuel Phan
1
Jak powiedziałem, link w Twojej odpowiedzi zawiera niedrukowalne znaki Unicode. Kiedy kopiuję / wklejam twój link, oto co widzę w 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 Oto znak Unicode: fileformat.info/info/unicode/char/200c/index.htm URL w mojej oryginalnej odpowiedzi działa, właśnie przetestowałem to.
Samuel Phan
1
Powiedziano mi, że repozytorium społeczności IUS nie jest tak niezawodne jak kolekcje oprogramowania, więc pójdę z odpowiedzią Mike'a Guerette na CentOS 6
bformet
2
Korzystając z tego rozwiązania, jak zainstalowałbyś pip dla python34?
Loïc
1
Bardzo dobre pytanie, dodałem do tego komentarz. To najlepsze, jakie znalazłem. Jeśli chcesz trzymać się instalacji opartej na RPM, powinieneś użyć repozytoriów IUS dla CentOS 7. Zapewniają one rozszerzenie python34u-pip.
Samuel Phan
31

Oprócz odpowiedzi gecco zmieniłbym krok 3 z:

./configure

do:

./configure --prefix=/opt/python3

Następnie po instalacji możesz również:

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

Ma to na celu zapewnienie, że instalacja nie będzie kolidować z pythonem zainstalowanym z yum.

Zobacz wyjaśnienie, które znalazłem w Internecie:

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

rsc
źródło
16
Dlaczego /opt? /usr/localistnieje specjalnie w tym celu i tam ./configurebez wyraźnego --prefixumieszczenia go.
cababunga
@cababunga Jak pisałem, wpływ na mnie miało przeczytanie samouczka z określonej strony. Niemniej jednak zainstalowanie Pythona w powyższy sposób może być użyteczne - byłoby znacznie łatwiej go odinstalować (wygląda na to, że nie ma celu dezinstalacji make). Możesz również łatwo zainstalować różne wersje pythona3 w określonych oddzielnych katalogach w / opt i ręcznie ustawić, której użyć lub przetestować.
rsc
Możesz również skonfigurować PATH tak, aby zawierał folder plików binarnych. Dla mnie to byłoexport PATH=$PATH:/opt/python3/bin
Caleb
10

Wraz z Pythonem 2.7 i 3.3, Red Hat Software Collections zawiera teraz Python 3.4 - wszystko działa zarówno na RHEL 6, jak i 7.

Dokumenty RHSCL 2.0 są dostępne pod adresem https://access.redhat.com/documentation/en-US/Red_Hat_Software_Collections/

Oraz wiele artykułów na developerblog.redhat.com.

edytować

Postępuj zgodnie z poniższymi instrukcjami, aby zainstalować Python 3.4 na RHEL 6/7 lub 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
Mike Guerette
źródło
//, Czy to nie wymaga od nas włączenia specjalnej powłoki? W połączeniu z virtualenvami widzę, że staje się to wrzodem na dupie.
Nathan Basanese
//, Dlaczego to wymaga scl enable rh-python34 bash? Jakie są konsekwencje późniejszego używania tego?
Nathan Basanese
Czy istnieje sposób na zainstalowanie Pythona 3.5 na RedHacie 6? Próbowałem wget https://www.softwarecollections.org/en/scls/rhscl/rh-python35/epel-6-x86_64/download/rhscl-rh-python35-epel-6-x86_64.noarch.rpm, ale nie znaleziono.
Searene
Musisz zapisać się, aby otrzymać kolekcje? Ile to kosztuje?
Noumenon
1
Nie ma dodatkowych kosztów. Kolekcje oprogramowania RH są częścią wszystkich subskrypcji programistów RHEL i większości subskrypcji RHEL. Bezpłatne subskrypcje deweloperskie RHEL można uzyskać pod adresem developers.redhat.com/download. To są prawdziwe subskrypcje RHEL - wszystkie te same bity, co uprawnienia do produkcji - ale służą do celów programistycznych.
Mike Guerette,
9

Użyj repozytoriów 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

(To ostatnie polecenie będzie musiało być uruchamiane za każdym razem, gdy chcesz użyć języka python27 zamiast domyślnego systemu).

Paul Draper
źródło
4
Po przeczytaniu dokumentów redhat, co musiałem zrobić, to albo; scl enable python33 bashaby uruchomić nową powłokę, która będzie włączona dla Pythona 3 lub scl enable python33 'python hello.py'która będzie uruchamiać plik Pythona przy użyciu Pythona 3 w bieżącej powłoce
przekąski
//, Jakie bardziej ogólne instrukcje umożliwiłyby również instalację Pythona 3.4?
Nathan Basanese
Jeśli jesteś na RHEL, użyj kolekcji Red Hat: subscription-manager repos --enable rhel-7-server-optional-rpms --enable rhel-server-rhscl-7-rpms. Wtedy możesz yum install rh-python36. Zobacz Jak zainstalować Python 3 na RHEL, aby uzyskać więcej informacji.
Rob T.
9

Możesz pobrać źródłowe RPM i binarne RPM dla RHEL6 / CentOS6 stąd

To jest backport z najnowszego źródła rozwoju Fedory do RHEL6 / CentOS6

Florian La Roche
źródło
To wspaniale. Dzięki za twój wysiłek, Florian. Może uruchomienie createrepotych katalogów uczyniłoby je jeszcze bardziej przydatne dla niektórych osób.
cababunga
Co za ulga. rpm zainstalowany idealnie.
lyomi
//, Jak zrobić repozytorium z tego linku?
Nathan Basanese,
//, mogę potwierdzić, że to działa. Zaczekaj, właśnie przygotowałem coś szybkiego, co użyło tego adresu URL jako baseurl: 0bin.net/paste/ ...
Nathan Basanese
6

Widzę wszystkie odpowiedzi jako prośbę o skompilowanie python3 z kodu lub zainstalowanie binarnego pakietu RPM. Oto kolejna odpowiedź, aby włączyć EPEL (Extra Packages for Enterprise Linux), a następnie zainstalować Pythona za pomocą yum. Kroki dla 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

Zobacz także link

Jay Rajput
źródło
Działa dobrze, zwłaszcza jeśli oficjalna droga przez SCL nie działa. Następnie uzupełnij instalację pip3:sudo yum install python34-setuptools
OSP
5

Miałem ten sam problem, używając Pythona 2.7. Wykonaj poniższe kroki, aby pomyślnie uaktualnić do wersji 3.6. Możesz też spróbować tego -

  1. Zobacz przed aktualizacją wersja 2.x

    python --version
    Python 2.7.5
  2. Użyj poniższego polecenia, aby zaktualizować Pythona do wersji 3.x-

    yum install python3x

    zamień x na żądany numer wersji.

    czyli do instalacji Pythona 3.6 wykonaj

    yum install python36
  3. Następnie, jeśli chcesz ustawić ten Python na domyślną wersję, w pliku bashrc dodaj

    vi ~ / .bashrc

    alias python='python3.6'
  4. wykonaj polecenie bash, aby zastosować ustawienia

    bash 
  5. Teraz możesz zobaczyć wersję poniżej

    python --version
    Python 3.6.3
IRSHAD
źródło
Ta odpowiedź nie zadziała bez dodania jednego z repozytoriów innych firm, EPEL lub IUS. W RHEL nie ma pakietu python36. Pakiet RHSCL to rh-python36.
Rob T.
4

Trzy kroki przy użyciu Pythona 3.5 przez kolekcje oprogramowania :

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

Zauważ, że sudo nie jest potrzebne w ostatnim poleceniu. Teraz widzimy, że Python 3 jest domyślnym dla bieżącej powłoki:

python --version
Python 3.5.1

Po prostu pomiń ostatnie polecenie, jeśli wolisz, aby Python 2 był domyślnym dla bieżącej powłoki.

Powiedzmy teraz, że twoje skrypty Python 3 powodują błąd, taki jak /usr/bin/env: python3: No such file or directory. Dzieje się tak, ponieważ instalacja zwykle odbywa się na nietypowej ścieżce:

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

Powyższe normalnie byłoby dowiązaniem symbolicznym. Jeśli chcesz python3być automatycznie dodawany do $PATHwszystkich użytkowników podczas uruchamiania, jednym ze sposobów jest dodanie pliku takiego jak:

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

Który miałby coś takiego:

#!/bin/bash

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

A teraz po ponownym uruchomieniu, jeśli to zrobimy

python3 --version

Powinno po prostu działać. Jedynym wyjątkiem byłby automatycznie generowany użytkownik, taki jak „jenkins”, na serwerze Jenkins, który nie ma powłoki. W takim przypadku ręczne dodanie ścieżki do $PATHw skryptach byłoby jednym ze sposobów.

Wreszcie, jeśli używasz sudo pip3do instalowania pakietów, ale mówi ci, że nie można znaleźć pip3, może to oznaczać, że masz bezpieczną_ścieżkę w / etc / sudoers . Sprawdzenie z sudo visudopowinno to potwierdzić. Aby tymczasowo użyć standardowej PATH podczas uruchamiania poleceń, możesz na przykład:

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

Zobacz to pytanie, aby uzyskać więcej informacji.

UWAGA : Jest nowszy Python 3.6 od Software Collections, ale nie polecałbym go w tej chwili, ponieważ miałem poważne bóle głowy, próbując zainstalować Pycurl. W przypadku Pythona 3.5 nie stanowi to problemu, ponieważ właśnie zrobiłem, sudo yum install sclo-python35-python-pycurlco zadziałało po wyjęciu z pudełka.

Nagev
źródło
No package centos-release-scl available.
Joe
Jest dostępny w repozytorium CentOS.
Nagev
4

Jeśli korzystasz z RHEL i chcesz mieć język Python obsługiwany przez Red Hat, użyj kolekcji oprogramowania Red Hat (RHSCL). Pakiety EPEL i IUS nie są obsługiwane przez firmę Red Hat. Również wiele z powyższych odpowiedzi wskazuje na kolekcje oprogramowania CentOS. Chociaż możesz je zainstalować, nie są to pakiety obsługiwane przez Red Hat dla RHEL.

Ponadto, najwyżej głosowana odpowiedź daje złą radę - na RHEL nie chcesz zmieniać /usr/bin/python, /usr/bin/python2ponieważ prawdopodobnie zepsujesz yumi inne narzędzia administracyjne RHEL. Spójrz /bin/yum, to skrypt w Pythonie, który zaczyna się od #!/usr/bin/python. Jeśli kompilujesz Pythona ze źródła, nie rób tego make installjako root. To nadpisze /usr/bin/python. Jeśli się zepsujesz yum, przywrócenie systemu może być trudne.

Aby uzyskać więcej informacji, zobacz Jak zainstalować Python 3, pip, venv, virtualenv i pipenv w RHEL na developers.redhat.com . Obejmuje instalowanie i używanie Python 3 z RHSCL, używanie wirtualnych środowisk Python oraz szereg wskazówek dotyczących pracy z kolekcjami oprogramowania i pracy z Pythonem w RHEL.

Krótko mówiąc, aby zainstalować Python 3.6 za pośrednictwem 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

Aby korzystać z kolekcji oprogramowania, musisz ją włączyć:

scl enable rh-python36 bash

Jeśli jednak chcesz, aby Python 3 był na stałe włączony, możesz dodać następujące elementy do swojego ~ / .bashrc, a następnie wylogować się i zalogować ponownie. Teraz Python 3 jest na twojej drodze.

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

Uwaga: kiedy już to zrobisz, wpisanie pythondaje teraz Python 3.6 zamiast Python 2.7.

Zobacz powyższy artykuł, aby dowiedzieć się wszystkiego i dużo więcej szczegółów.

Rob T.
źródło
3

Jeśli chcesz oficjalne pakiety RHEL, możesz użyć RHSCL (Red Hat Software Collections)

Więcej szczegółów:

Aby przeczytać pełne artykuły, musisz mieć dostęp do portalu klienta Red Hat.

daneel
źródło
//, Po prostu przegłosowano. Czy zechciałbyś podsumować, co trzeba zrobić, aby użyć w tym celu RHSCL? W końcu to witryna z pytaniami i odpowiedziami.
Nathan Basanese
1
Artykuł Jak zainstalować Python 3 na RHEL zawiera aktualne kroki dla Pythona 3.6 za pośrednictwem kolekcji oprogramowania i wiele wskazówek dotyczących pracy z RHSCL, Python i środowiskami wirtualnymi.
Rob T.
3

Oto kroki, które wykonałem, aby zainstalować 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
Aty
źródło
2
Jeśli budujesz ze źródeł bez instalowania wielu zależności -devel (SSL, bzip itp.), Stracisz pewną liczbę modułów zależnych od współdzielonych obiektów. Zainstalowanie jednej z dystrybucji opartych na rpm (RHSCL, EPEL lub IUS) jest lepszym pomysłem
Rob T.
1

yum install python34.x86_64działa, jeśli epel-releasezainstalowany, co ta odpowiedź wyjaśnia, w jaki sposób, i potwierdził, że pracował naRHEL 7.3

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

$ type python3
python3 is hashed (/usr/bin/python3)
amfibia
źródło
1

Dla RHEL na Amazon Linux, używając python3 musiałem zrobić:

sudo yum install python34-devel

Maxime Martineau
źródło
1
No package python34-devel available.
Joe
1

Pełna praca 36, ​​gdy SCL nie jest dostępny (na podstawie danych wejściowych 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

Wreszcie aktywuj środowisko ...

pyvenv-3.6 py3
source py3/bin/activate

Następnie python3

OSP
źródło
0

Możesz zainstalować minicondę ( https://conda.io/miniconda.html ). To trochę więcej niż tylko Python 3.7, ale instalacja jest bardzo prosta i prosta.

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

Musisz zaakceptować umowę licencyjną i wybrać kilka opcji w trybie interaktywnym (zaakceptuj wartości domyślne). Uważam, że można go też jakoś zainstalować cicho.

grabantot
źródło
Nie udało się znaleźć pythonpóźniej aktualnego polecenia, czy jest ono opakowane?
Mugen
0

Dla osób pracujących na AWS EC2 RHEL 7.5 ( użyj sudo ) włącz wymagane repozytoria

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

Zainstaluj Python 3.6

yum install rh-python36

Zainstaluj inne zależności

yum install rh-python36-numpy  rh-python36-scipy  rh-python36-python-tools  rh-python36-python-six
Vasu
źródło