Jak zainstalować inną wersję Pythona za pomocą apt-get?


125

Jak mogę zainstalować inną wersję Pythona za pomocą apt-get?

Oczywiście zdaję sobie sprawę, że mogę zainstalować przy użyciu źródłowej tar-tar, jednak wolałbym nie instalować ze źródła i zamiast tego używać menedżera pakietów, ponieważ po to jest. Z pewnością gdzieś renomowane budują pliki .deb dla najnowszych wydań Pythona (dlaczego python.org nie jest poza mną), do których mogę się odwoływać.

Co muszę zrobić, aby się do nich odwoływać i jakie problemy mogą się pojawić podczas aktualizacji do następnej wersji?

Jeśli nie ma innego wyjścia niż budowanie ze źródła, czy istnieje pakiet (pseudo), który mogę zainstalować, który zapewni wszystkie niezbędne zależności bez konieczności znajdowania i instalowania każdego z nich osobno? Żebym nie dostał:

The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_dbm                  _gdbm                 _lzma              
_sqlite3              _ssl                  _tkinter           
readline              zlib  


czy kiedykolwiek dostałeś E: Couldn't find any package by regex 'python3.5'i dlatego nie udało ci się zainstalować przez apt-get install python3.5?
Charlie Parker,


kilka dobrych sugestii tutaj: quora.com/…
Charlie Parker

1
@CharlieParker Czy próbowałeś zainstalować Anaconda ?
M. Becerra

Odpowiedzi:


169

Felix Krull prowadzi PPA, oferując praktycznie każdą wersję Pythona (poważnie, istnieje wersja 2.3.7 dla żywych ...) dla wielu wydań Ubuntu na https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa .

Wykonuj zwykle:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.5

Nie zastąpi twojego istniejącego, python3.4który nadal jest dowiązaniem symbolicznym jako python3.

NIE zmieniaj dowiązania symbolicznego! Najwyraźniej istnieje wiele funkcji systemowych, które nie działają poprawnie z python3.5.

Próbowałem tego, a potem nie mogłem otworzyć terminala, aktualizatora oprogramowania, ...

cd /usr/bin
sudo rm python3

Aktualizacja do Wily dostosuje meta-pakiet python3do wskazania python3.5. Nie oczekuję żadnego uszkodzenia, ale w tym momencie zagraniczne repozytorium nie jest już potrzebne. Aby być naprawdę bezpiecznym, możesz wyczyścić PPA przed wykonaniem aktualizacji.


5
dla nooba tam nie ma dowiązania symbolicznego! również brak symlinkowania oznacza po prostu, że musisz wpisać python3.5 z wiersza poleceń, aby uruchomić python 3.5
Chris Hawkes

4
Czy mógłbyś mi wskazać, jak mogę korzystać z pipa 3.4 z tym 3.5?
Groosha 14.04.16

2
@ kondra007 Postępowałem zgodnie z instrukcjami z pip.pypa.io/en/stable/installing (proszę przeczytać ostrzeżenie tam) i te dwie komendy wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.pydały mi działający pip dla Pythona 3.5, ale pip3.4 już nie działa. Jeśli ktoś wie lepiej, proszę o komentarz
ndemou

2
Również ustawić Python3.5 jako domyślny ~$ vim ~/.bashrci dodać to alias python=python3.5. następnie~$source ~/.bashrc
Krishnadas PC,

1
Wskazówki: jeśli add-apt-repository: command not founduruchom, apt-get install software-properties-common python-software-propertiesaby zainstalować
Mithril

35

Ten link do YouTube'a pomógł mi go zainstalować.

Kroki są następujące:

sudo apt-get install libssl-dev openssl
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz
tar xzvf Python-3.5.0.tgz
cd Python-3.5.0
./configure
make
sudo make install

Aby sprawdzić, czy Python jest zainstalowany, wpisz python3.5:

sudo ln -fs /opt/Python-3.5.0/Python /usr/bin/python3.5

3
OP powiedział, że nie chce kompilować ze źródła
Michael Bates,

3
Tak masz rację. Również kompilacja ze źródła może wprowadzić pewne problemy zależności w dalszej części drogi. Ale tak to rozwiązałem. Jeśli istnieje lepszy sposób, zdecydowanie chciałbym wiedzieć.
joydeep bhattacharjee

5
Zastanów się ./configure --enable-optimizations stackoverflow.com/questions/41405728/...
warvariuc

1
@CharlieParker, ponieważ Python nie jest stworzony dla konkretnego systemu operacyjnego. Ma być uruchamiany na dowolnej platformie. W przypadku Linuksa oznacza to, że albo każda wersja musi zostać skompilowana i dystrybuowana dla każdej wersji każdej dystrybucji Linuksa (których jest wiele), lub dystrybuują źródło i pozwalają użytkownikowi samodzielnie go skompilować w środowisku, w którym będzie używany. To drugie jest znacznie bardziej wykonalne.
CJStuart

2
Potrzebujesz również kompilatora c / c ++ zapt-get install build-essential
bato3

13

Wystarczy wykonać następujące kroki (przetestowane):

Krok 1 - Zainstaluj wymagane pakiety

Użyj następującego polecenia, aby zainstalować wymagania wstępne dla Pythona przed jego zainstalowaniem.

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Krok 2 - Pobierz Python 3.5.2

Pobierz Python za pomocą następującego polecenia z oficjalnej strony Python. Możesz również pobrać najnowszą wersję zamiast podanej poniżej.

cd /usr/src
sudo wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz

Teraz rozpakuj pobrany pakiet.

sudo tar xzf Python-3.5.2.tgz

Krok 3 - Skompiluj źródło Python

Użyj poniższego zestawu poleceń, aby skompilować kod źródłowy Pythona w systemie za pomocą altinstall.

cd Python-3.5.2
sudo ./configure
sudo make altinstall

make altinstallsłuży do zapobiegania zamianie domyślnego pliku binarnego Pythona /usr/bin/python.

Krok 4 - Sprawdź wersję Python

Sprawdź najnowszą zainstalowaną wersję Pythona za pomocą poniższego polecenia.

$ python3.5 -V

Python 3.5.2

Źródło .


2
+1 za domyślne użycie altinstall. Nie ma wielu prawdziwych scenariuszy, w których możesz żyć tylko z jedną wersją. Nawet w systemach domyślnie z Python3 możesz być zmuszony zainstalować Python w wersji odwróconej -> Python2 lub dodać Python2.
erm3nda

1
Wystąpił błąd, jak opisano tutaj - bugs.python.org/issue31652 musiał go uruchomić, sudo apt-get install libffi-devaby go rozwiązać.
Nishan Chathuranga

Dodałbym również, sudo apt-get install liblzma-devaby włączyć obsługę LZMA.
v.grabovets

6

O ile mi wiadomo, przynajmniej w kontenerze dokowanym można definitywnie apt-getpython 3.

Najpierw wpadłem na kontener ubuntu z kontenerem:

docker run -it --rm ubuntu:latest bash

potem z jakiegoś powodu musiałem zaktualizować niektóre rzeczy z Ubuntu, więc zrobiłem to (w kontenerze):

apt-get update && apt-get install -y build-essential git libjpeg-dev

a potem po prostu zainstalowałem Python3 i wygląda na to, że automatycznie otrzymał Python 3.5:

apt-get install python3
apt-get install python3-pip

i przetestowanie, czy pip działa, pozwala pobrać coś:

pip3 install tensorflow

wydaje mi się, że wszystko działa dobrze.

Ważna uwaga: wydaje się, że jeśli masz już zainstalowany Python 3.4, to apt-get install python3nie działa, ponieważ mówi, że już go masz. Wygląda na to, że był to jeden z moich problemów, ponieważ zaczynałem od obrazu dokera od tensorflow (w szczególności gcr.io/tensorflow/tensorflow:latest-devel-py3) i coś na tym obrazie (zakładam, że mają już Python 3.4, ale może coś innego) nie pozwoliło mi na aktualizację mój python, aby uzyskać python 3.5.


kredyt: Odkryłem to, gdy zapytałem: https://stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-based-out-of-the -tensorflow-docker


Uwaga: można też po prostu zainstalować Anacondę. Na przykład dokera można zrobić:

docker pull continuumio/anaconda3
docker run -i -t continuumio/anaconda3 /bin/bash

z ich oficjalnej strony internetowej: https://hub.docker.com/r/continuumio/anaconda3/

To rozwiązanie instaluje Python 3.6, ale jestem pewien, że jeśli tam zajrzysz, możesz uzyskać Python 3.5, jeśli tego chcesz.

Uwaga: prawdopodobnie i tak powinieneś używać środowiska wirtualnego, takiego jak wirtualna env lub conda / anaconda, chyba że korzystasz z dokera. Chciałem tylko przypomnieć ludziom.


1
„w kontenerze dokera” jest bardzo ogólną instrukcją: wszystko zależy od tego, na którym obrazie opiera się kontener, na przykład na której wersji Ubuntu. Co więcej, mogą istnieć mniejsze wersje, takie jak 3.5 lub 3.6, które nie są dostępne w jednej wersji Ubuntu (na przykład 14.04)
giorgiosironi

2

Istnieje wiele nowszych dystrybucji Pythona dostępnych do zainstalowania za pośrednictwem apt-get, wymienionych w Pakietach Ubuntu

jako przykład obecnie dostępne są następujące wersje:

python2.7

python3.2

python3.4

python3.5

python3.6

Dostępność różni się w zależności od wersji Ubuntu. Na przykład 3.5 jest dostępny dla Xenial, Yakkety i Zesty, a 3.6 jest dostępny dla Yakkety i Zesty, ale musisz włączyć repozytorium Wszechświata, jeśli nie można go uzyskać poprzez apt-get. Aby sprawdzić dostępność swojej wersji Ubuntu, sprawdź powyższe łącza.

Szybki podgląd wskazuje, że ta odpowiedź jest nadal aktualna, ponieważ PPA ma wartość 3.6, nawet dla Trusty.


wersje Python dostępne w Ubuntu Repo nie są najnowszą wersją Python .
yaitloutou

@yaitloutou Pytanie brzmi: „nowszy”, a nie „najnowszy”. W każdym razie zachęcamy do napisania lepszej odpowiedzi.
Starszy Geek

Masz rację, ale ponieważ nowsze w stosunku do tego, co nie zostało określone, zinterpretowałem to jako najnowsze :)
yaitloutou

@yaitloutou Nie krępuj się i napisz lepszą odpowiedź! Jestem pewien, że to będzie mile widziane.
Starszy Geek

Właśnie zacząłem tu działać i wciąż się uczę. Przepraszam, jeśli mój komentarz do twojej odpowiedzi jest natrętny
yaitloutou

0

Rozważałbym użycie środowisk wirtualnych zamiast instalowania wersji Pythona za pomocą apt-get.

Korzystanie ze środowisk wirtualnych, patrz tutaj, jest dobrą praktyką przy programowaniu w Pythonie. Pozwalają one odizolować środowisko Pythona od zainstalowanych w systemie wersji Pythona.

Ponadto nie musisz uzyskiwać dostępu do sudo podczas instalowania dowolnej biblioteki (przez pip itp.).


11
Myślę, że musisz zainstalować odpowiednią wersję Pythona, zanim będziesz mógł używać jej w środowisku wirtualnym.
Nzbuu,

1
Instalujesz żądaną wersję Pythona w środowisku wirtualnym, a nie zmieniasz ścieżkę związaną z Pythonem, po prostu uruchamiając skrypt „aktywuj” w środowisku wirtualnym.
devrimbaris

To jest dokładnie to, co chcę zrobić - pierwszą rzeczą, jaką próbowałem zrobić po odpowiedzi @ Nephente, było wskazanie tego virtualenv -p. Ale wysadził się w powietrze z „ImportError: nie można zaimportować nazwy„ HTTPSHandler ””.
Michael Scheper,

1
dlaczego to zostało odrzucone? wirtualne envs zwykle działają dobrze.
Charlie Parker,

Jak zainstalować wirtualną env w Ubuntu (jak w twojej sugestii), ale w Pythonie 3.5?
Charlie Parker

0

Conda jest aktywnie aktualizowana i pozwala na instalowanie wielu wersji Pythona w zarządzanych venvach bez nudy samodzielnego konfigurowania. Problemy z ścieżką rozszerzenia binarnego mogły zostać rozwiązane w wielu łańcuchach zależności / pip zarządzanych przez anakondę.

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.