Jak zainstalować Python 3.6?


107

Chciałbym zainstalować najnowszy Python, który w momencie pisania tego posta ma wersję 3.6. Jednak repozytorium mówi, że Python 3.4.2 jest najnowszą wersją.

Próbowałem:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Aby uaktualnić do Pythona 3.6 na mojej stacji roboczej Windows, po prostu pobrałem plik exe, kilka razy kliknąłem „Dalej” i gotowe. Jaka jest właściwa i oficjalnie zaakceptowana procedura instalacji Pythona 3.6 na Debian Jessie?


6
Domyślne repozytoria Debiana zawierają pakiety oprogramowania specjalnie skompilowane dla określonej wersji Debiana. Poza aktualizacjami zabezpieczeń (najlepiej tylko najmniejszymi zmianami potrzebnymi do naprawienia dziury w zabezpieczeniach) nowe wersje większości oprogramowania mogą być niedostępne do następnej głównej wersji, aby uniknąć potencjalnej niestabilności.
phk,

@phk W takim przypadku, czy nie byłoby rozsądne zastosować zachowanie podobne do pip, tj. domyślnie do 3.4.2, gdy wersja nie jest określona, ​​i pozwolić użytkownikowi na jawne zażądanie 3.6 z flagą? Po prostu pomysł :)
dvtan,

1
Oznaczałoby to, że ludzie Debiana będą musieli zachować wszystkie te wersje Pythona dla każdej obsługiwanej wersji Debiana. Jasne, można to zautomatyzować, ale wciąż byłoby dużo. Również zaawansowani użytkownicy, którzy chcą nowszych wersji, mogą równie dobrze korzystać z niestandardowych repozytoriów. Czasami sami autorzy oprogramowania utrzymują je dla Debiana i innych popularnych dystrybucji Linuksa, np. W przypadku Oracle VirtualBox .
phk,

1
Python 3.6 (choć rc1) właśnie pojawił się w eksperymentalnej wersji Debiana. Prawdopodobnie możliwe jest przeniesienie go do Jessie, być może z drobnymi poprawkami.
Faheem Mitha

Aktualizacja. To zakończyło się sukcesem dla mnie w stabilnej wersji Debiana (jessie). Nie oznacza to jednak, że instalacja zakończy się pomyślnie i nie spowoduje problemów. Rozsądnym następnym krokiem byłoby przetestowanie go na testowej maszynie wirtualnej stabilnej. Czy kogoś to obchodzi?
Faheem Mitha,

Odpowiedzi:


66

Debian nie ma Pythona 3.6 w swoich repozytoriach, ale testy go mają.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Zapytałeś o:

właściwa i oficjalnie zaakceptowana procedura

ale muszę zaznaczyć, że nie jest to oficjalne rozwiązanie, ponieważ używa repozytoriów testujących.


62
Ostrzeżenie: spowoduje to uaktualnienie twojego systemu do wersji hybrydowej jakiejkolwiek wersji Debiana, którą teraz uruchomisz (prawdopodobnie „stabilnej”) oraz „niestabilnej” plus „eksperymentalnej”. Będzie to o wiele gorsze niż zwykła aktualizacja do niestabilnej i wybieranie kilku pakietów z eksperymentu lub (jeszcze lepiej, pozostawanie przy stabilnym i wybieraniu z backports i / lub niestabilnym i / lub eksperymentalnym). Odwrócenie tego będzie prawie niemożliwe. NIE jest to zalecane, chyba że masz duże doświadczenie z debianem i pakietami debian
cas

8
zredagowano odpowiedź, aby ustawić domyślną wersję apt na stabilną. i usunąłem zwariowane „apt-get upgrade” (które aktualizuje wszystko do najnowszych wersji dostępnych w wersji niestabilnej lub eksperymentalnej, z wyjątkiem wszystkiego, co spowodowałoby usunięcie innego pakietu). To powinno uczynić tę procedurę o wiele mniej niebezpieczną, ale wciąż nie bezpieczną. I nadal nie jest zalecany dla nowicjuszy. „eksperymentalny” nie jest przeznaczony do codziennego użytku, jest przeznaczony do dziwnych, niesprawdzonych, prawdopodobnie zepsutych rzeczy, które mogą powodować konflikty lub uszkodzenia nawet w „niestabilności”. Jest również używany jako obszar przejściowy dla dużych aktualizacji wielu pakietów.
cas

1
zredagowano odpowiedź, ponieważ python 3.6.2 znajduje się (teraz) w testingrepozytorium, co jest bezpieczniejsze dla przeciętnego użytkownika.
m4p85r

4
Nie próbuj tego - cofnięcie zajmie wieki
użytkownik3728501

1
Czy nadal jest to tak ryzykowne, jak sugerowano w sierpniu (lub grudniu) 2017 r.? Nie jest już jasne, kiedy @cas dokonał edycji i skomentował. Czy ktoś może śledzić?
Brian Peterson

154

Możesz zainstalować Python-3.6na Debianie 8 w następujący sposób:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

Zaleca się używać make altinstallzgodnie z oficjalną stroną internetową .

Jeśli chcesz pipzostać uwzględniony, musisz dodać --with-ensurepip=installdo połączenia konfiguracyjnego. Więcej szczegółów można znaleźć ./configure --help.

Ostrzeżenie: make installmoże zastąpić lub zamaskować plik binarny Pythona. make altinstalljest zatem zalecane zamiast, make installponieważ instaluje się tylko exec_prefix/bin/pythonversion.

Niektóre pakiety muszą zostać zainstalowane, aby uniknąć znanych problemów, patrz: Typowe problemy z kompilacją (zaktualizowane)

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternatywa dla libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternatywa dla openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Aktualizacja

Można pobrać najnowszy python-x.y.z.tar.gzz tutaj .

Aby ustawić domyślną wersję Pythona i łatwo przełączać się między nimi, musisz zaktualizować update-alternativeswersję z wieloma pythonami.

Powiedzmy, że zainstalowałeś python3.7na debian stretch, użyj polecenia, whereis pythonaby zlokalizować binary ( */bin/python). na przykład:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Dodaj wersje python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

python3.7Z 50priorytetem jest teraz domyślnym Python, python -Vdruku:

Python 3.7.0b2

Aby przełączać się między nimi, użyj:

update-alternatives --config python

Przykładowe dane wyjściowe:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 

5
Czy faceci z Debiana nie polecają checkinstall? W przeciwnym razie dobrze byłoby zainstalować go w /usr/locallub /opt.
Ivan Anishchuk

3
Zgodnie z ./configure --helpPython 3.6 instaluje się /usr/localdomyślnie.
Markus Strauss

2
Masz problem z tą odpowiedzią (np. Moduł SSL jest niedostępny lub brakuje zlib)? Zobacz: stackoverflow.com/a/41601137/972128
kkurian

11
Oświadczenie: zajmuje to ponad 20 godzin na urządzeniu o niskiej mocy, takim jak Pi zero.
Antoine Lizée,

2
wersja 3.7jest out
Timo

32

Oficjalna rekomendacja brzmi: „tak naprawdę nie potrzebujesz nowszego oprogramowania”

Nie cierpię na zespół Shiny New Stuff - DontBreakDebian | Debian Wiki

Większość porad na tej stronie dotyczy tego, co zrobić, jeśli chcesz, aby oprogramowanie było dostępne w całym systemie, ale nie sądzę, aby było to konieczne w tym przypadku.

Jeśli pobierasz źródła Pythona, zbuduj interpreter 3.6 za pomocą, --prefixaby kontrolować, gdzie się on kończy, a następnie użyj virtualenvz tą --pythonopcją, wtedy możesz używać Pythona 3.6 bez wpływu na nic poza projektem.

Proces może przebiegać mniej więcej tak:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Jeśli masz zamiar to zrobić, możesz rozważyć --enable-optimizationsflagę w configureskrypcie Python , która wydaje się umożliwiać niektóre funkcje, takie jak optymalizacja sterowana profilem. Wydłuża czas kompilacji, ale wydaje się, że według niektórych testów porównawczych przyspiesza tłumacza o około 10%.


5
Jest to zgodne z ogólną regułą Pythona „Praktyczność bije czystość”. Zwykle instaluję pytony z pakietów źródłowych w / opt / python-xyz, a następnie uruchamiam aplikacje z własnych virtualenvs.
zgoda

1
Ważna uwaga: jeśli masz zamiar zrobić coś takiego: upewnij się, że jakikolwiek użytkownik, na którym działa Twój proces Python, nie może modyfikować virtualenv
Gregory Nisbet

1
Moim zdaniem jest to najlepsza odpowiedź.
BringBackCommodore64

Dziękuję za tę radę. W przeszłości zepsułem instalację Debiana z dodatkiem systemowym.
zamrożony

W mojej instalacji [venv]$ which pythonnie daj mi /home/<user>/pythonroot/bin/python, ale /home/<user>/app/venv/bin/python3zamiast tego… dlaczego?
zamrożone

12

Możesz rzucić okiem na pyenv: https://github.com/yyuu/pyenv . Cytat z pyenvsamouczka w Amaral Lab:

Wcześniej znany jako Pythonbrew, pyenv pozwala zmieniać globalną wersję Pythona, instalować wiele wersji Pythona, ustawiać wersje Python specyficzne dla katalogu (projektu) i tak tworzyć / zarządzać wirtualnymi środowiskami Pythona („virtualenvs”). Wszystko to odbywa się na maszynach w stylu * NIX (Linux i OS X), bez zależności od samego Pythona i działa na poziomie użytkownika - nie potrzeba żadnych poleceń sudo.


3
Chociaż ten link może odpowiedzieć na pytanie, lepiej jest dołączyć tutaj istotne części odpowiedzi i podać link w celach informacyjnych. Odpowiedzi zawierające tylko łącze mogą stać się nieprawidłowe, jeśli połączona strona ulegnie zmianie. - Z recenzji
Archemar,

Masz rację, zmieni odpowiedź.
schaiba,

1
Wydaje

Działa to dobrze, z wyjątkiem sytuacji, gdy masz do czynienia z urządzeniami osadzonymi. Aby „zainstalować” wersję Pythona, źródło jest pobierane i kompilowane lokalnie. Poza tym pyenv to świetny wybór i ma dużą elastyczność, w tym uruchamianie różnych wersji Pythona w różnych katalogach i radzenie sobie z bardzo irytującymi problemami PIP.
Brian Bulkowski

11

Mój preferowanym sposobem jest użycie Anaconda lub Miniconda zachować ostatnią wersję Python i pakietów zainstalowanych na Debianie.

Wszystko jest starannie przechowywane w folderze, co ułatwia późniejsze usunięcie, jeśli chcesz. Instalator dodaje również ścieżkę do twojego bashrc (dodaj go sam, jeśli używasz innej powłoki).

Jest wyposażony w pip, a także conda, który jest innym menedżerem pakietów, niż może być dobry w przypadku bardziej złożonych pakietów, takich jak numpy. Miniconda to instalacja bez systemu operacyjnego, a Anaconda to pełna instalacja z wieloma pakietami, zaprojektowanymi głównie do analizy danych.

Szybko:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Przeczytaj i zaakceptuj licencję, jeśli nie używasz ścieżki dodawania bash: export PATH="/home/$USER/miniconda3/bin:$PATH"

Test:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Zainstaluj z PyPi:

# pip install fava

Zainstaluj z Conda:

# conda install numpy

Kiedy chcesz go usunąć, usuń folder ~/miniconda3i ścieżkę z twojego bashrc.


Po niekończących się problemach z instalacją Pythona ze źródła ta wersja działała idealnie! Pamiętaj, że jeśli chcesz pracować z virtualenv (wrapper) do zarządzania środowiskiem, musisz dodać katalog biblioteki miniconda do LD_LIBRARY_PATH. Np .: dodaj export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"do .bashrc.
jrast

„Instalator dodaje również ścieżkę do twojego bashrc” To jest główny powód, dla którego nie używam anakondy. Ciche maskowanie istniejącego środowiska python nie jest zdrowe, mówiąc delikatnie.
MisterMiyagi,

3

Debian nie ma Pythona 3.6 w swoich repozytoriach. Oto migawka bieżącego stanu Python3:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Możesz to sprawdzić tutaj .

Możesz zainstalować 3.6 ze źródła lub używając czegoś takiego jak Linuxbrew do instalacji katalogu domowego.


3

Z tym

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Z powodzeniem działa.

Więcej: ustaw python3.6 jako domyślny

sudo alias python=/usr/bin/python3.6

Teraz :

python --version
Python 3.6

Należy przeczytaćsudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
deklinacja

3
Ta odpowiedź jest taka sama jak odpowiedź zaakceptowana, nadeszła rok później, a mimo to nie daje prawidłowych poleceń.
Do 마 SE

1

Python 3.6 (choć rc1) właśnie pojawił się w eksperymentalnej wersji Debiana. Udało mi się to zbudować na stabilnej wersji Debiana (jessie). Zobacz ostatnie kroki kompilacji wklejone poniżej.

Nie oznacza to jednak, że instalacja zakończy się pomyślnie i nie spowoduje problemów. Rozsądnym następnym krokiem byłoby przetestowanie go na testowej maszynie wirtualnej stabilnej. Jeśli komu to zależy, mógłbym spróbować - albo ktoś inny mógłby spróbować.

Prawidłowa wersja powinna niedługo pojawić się w Debianie.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.
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.