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?


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)


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

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


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

//, 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).


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


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


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

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.


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.


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.


//, 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

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)

1

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

sudo yum install python34-devel


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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.