Як встановити Python 3.6?


107

Я хотів би встановити останній Python, який на момент цієї публікації становив 3,6. Однак у сховищі йдеться про те, що Python 3.4.2 - це найновіша версія.

Я спробував:

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

python3 is already the newest version.

$ python -V

Python 3.4.2

Щоб оновити Python 3.6 на робочій станції Windows, я просто завантажив exe, кілька разів натиснув "наступний", і це зроблено. Яка правильна та офіційно прийнята процедура встановлення Python 3.6 на Debian Jessie?


6
За замовчуванням сховища Debian містять програмні пакети, спеціально складені для певної версії Debian. За винятком оновлень безпеки (бажано лише найменших змін, необхідних для виправлення отвору в безпеці) нові версії більшості програмного забезпечення можуть бути недоступними до наступного основного випуску, щоб уникнути потенційної нестабільності.
phk

@phk У цьому випадку, чи не було б доцільним прийняти поведінку, подібну до pip, тобто за замовчуванням до 3.4.2, коли версія не вказана, і дозволити користувачу явно вимагати 3.6 з прапором? Просто ідея :)
dvtan

1
Це означає, що людям Debian доведеться підтримувати всі ці версії Python для кожної підтримуваної версії Debian. Звичайно, це може бути автоматизовано, але це було б ще багато. Крім того, користувачі, які хочуть отримати новіші версії, можуть також добре використовувати власні сховища. Іноді автори програмного забезпечення самі підтримують їх для Debian та інших популярних дистрибутивів Linux, наприклад, у випадку з Oracle VirtualBox .
phk

1
Python 3.6 (хоча rc1) щойно прийшов в експериментальний Debian. Можливо, це можливо підтримати до Джессі, можливо, трохи попрацювавши.
Faheem Mitha

Оновлення. Ця завершена будівля успішно для мене на стайні Debian (jessie). Однак це не означає, що він буде встановлений успішно і не спричинить проблем. Наступним кроком було б перевірити його на тестовій VM стабільності. Хтось хвилює?
Faheem Mitha

Відповіді:


66

Debian не має Python 3.6 у своїх сховищах, але тестування має.

$ 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

Ви просили:

належна та офіційно прийнята процедура

але мушу зазначити, що це не офіційне рішення, оскільки воно використовує тестові сховища.


62
Попередження: це покращить вашу систему до гібриду будь-якого випуску debian, який ви зараз працюєте (можливо, "стабільний") плюс "нестабільний" плюс "експериментальний". Це буде набагато гірше, ніж просто перехід на модернізацію до нестабільного та збирання вишні декількох пакетів з експериментальних, або (ще краще, залишатися стабільним і збирати вишню з опорних та / або нестабільних та / або експериментальних). Повернутись із цього буде майже неможливо. НЕ рекомендується, якщо у вас багато досвіду роботи з пакунками для debian та debian
cas

8
відредагована відповідь, щоб встановити версію apt за замовчуванням на стабільну. і видалили шалене "apt-get upgrade" (яке оновлює все до останніх версій, доступних у нестабільній чи експериментальній, за винятком всього, що спричинило б видалення іншого пакета). Це повинно зробити цю процедуру набагато менш небезпечною, але все ще не безпечною. І все ще не рекомендується новачкам. "експериментальний" не для випадкового використання, це для дивних, неперевірених, можливо, зламаних речей, які можуть конфліктувати або порушувати речі навіть у "нестабільному". Він також використовується як сцена для великих модернізацій пакетів.
cas

1
відредагована відповідь як python 3.6.2 знаходиться (зараз) у testingсховищі, що є більш безпечним для середнього користувача.
m4p85r

4
Не спробуйте цього - скасувати це вам доведеться віками
user3728501

1
Це все ще так ризиковано зробити, як пропонувалося в серпні (або грудні) 2017 року? Це вже не ясно, коли @cas відредагував та зробив свій коментар. Може хтось слідкує?
Брайан Петерсон

154

Ви можете встановити Python-3.6на Debian 8 наступним чином:

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

Рекомендується використовувати make altinstallзгідно з офіційним веб-сайтом .

Якщо ви хочете pipбути включеними, вам потрібно додати --with-ensurepip=installдо свого виклику налаштування. Детальніше див ./configure --help.

Попередження: make installможна перезаписати або замаскувати бінарний пітон. make altinstallТому рекомендується замість цього, make installоскільки він встановлюється тільки exec_prefix/bin/pythonversion.

Для уникнення деяких відомих проблем потрібно встановити деякі пакунки, див.: Загальні проблеми у складанні (оновлено)

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

Альтернатива 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

Альтернатива openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Оновлення

Ви можете завантажити останній python-x.y.z.tar.gzз тут .

Щоб встановити версію python за замовчуванням та легко перемикатися між ними, потрібно оновити свою версію update-alternativesз декількома python.

Скажімо, ви встановили python3.7на debian stretch, використовуйте команду, whereis pythonщоб знайти бінарний ( */bin/python). e, g:

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

Додайте версії 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.7З 50пріоритетом тепер ваш пітон по замовчуванню, то python -Vбуде друкувати:

Python 3.7.0b2

Для переключення між ними використовуйте:

update-alternatives --config python

Вибірка зразка:

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
Не рекомендують хлопці з debian checkinstall? В іншому випадку було б розумно встановити його на /usr/localабо /opt.
Іван Аніщук

3
Згідно з ./configure --helpPython 3.6 встановлюється /usr/localза замовчуванням.
Маркус Стросс

2
У вас виникли проблеми з цією відповіддю (наприклад, модуль SSL недоступний або zlib відсутній)? Див: stackoverflow.com/a/41601137/972128
kkurian

11
Відмова від відповідальності: це триває 20 годин на пристрої з низьким рівнем живлення, як Pi nu.
Антуан Лізе

2
версія 3.7знаходиться поза
Timo

32

Офіційна рекомендація - "вам насправді не потрібно нове програмне забезпечення"

Не страждайте від синдрому блискучих нових речей - DontBreakDebian | Debian Wiki

Більшість порад на цій сторінці орієнтовані на те, що робити, якщо ви хочете, щоб це програмне забезпечення було доступне у всій системі, але я не думаю, що це потрібно в цьому випадку.

Якщо ви запитуєте джерела пітона, побудувати 3.6 інтерпретатор , використовуючи --prefixдля управління , де вона закінчується, а потім використовувати virtualenvз --pythonпараметром, то ви можете використовувати Python 3.6 , не зачіпаючи нічого поза вашого проекту.

Процес може йти приблизно так:

$ 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

Якщо ви збираєтеся це зробити, можливо, ви захочете розглянути --enable-optimizationsпрапор у configureсценарії Python , який, здається, дозволяє деякі функції, такі як орієнтована на профілі оптимізація. Це збільшує час складання, але, здається, призводить до більш швидкого перекладу на 10% або близько, згідно з деякими орієнтирами.


5
Звідси випливає загальне правило Пітона "Практичність перемагає чистоту". Я схильний встановлювати пітони з вихідних пакетів в / opt / python-xyz, а потім запускати програми із власних virtualenvs.
zgoda

1
Важлива примітка: якщо ви збираєтеся робити щось подібне: переконайтеся, що будь-який користувач, який працює у вашому Python, не може змінити virtualenv
Gregory Nisbet

1
На мою думку, це найкраща відповідь.
BringBackCommodore64

Дякую за цю пораду. Раніше я зламав деяку установку debian із системним аддоном.
заморожено

У моїй установці [venv]$ which pythonне дайте мені /home/<user>/pythonroot/bin/python, а /home/<user>/app/venv/bin/python3натомість… чому?
заморожено

12

Можливо, ви захочете подивитися pyenv: https://github.com/yyuu/pyenv . Цитувати з pyenvпідручника в Amaral Lab:

Раніше відомий як Pythonbrew, pyenv дозволяє змінювати глобальну версію Python, встановлювати декілька версій Python, встановлювати специфічні версії Python для каталогу (проекту) та так, створювати / керувати віртуальними середовищами python ("virtualenvs"). Все це робиться на машинах * стилю NIX (Linux та OS X), не залежно від самого Python, і це працює на рівні користувача - не потрібно ніяких команд sudo.


3
Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
Архемар

Ти маєш рацію, зміниш відповідь.
schaiba

1
Я думаю, що він мав на увазі також включити і основні командні рядки ...
not2qubit

Це добре працює, за винятком випадків, коли ви маєте справу з вбудованими пристроями. Щоб "встановити" версію python, джерело завантажується та компілюється локально. Крім цього, pyenv є чудовим вибором і має велику гнучкість, включаючи запуск різних версій python в різних каталогах і вирішення дуже прикрих проблем з PIP.
Брайан Булковський

11

Моїм кращим способом є використання Anaconda або Miniconda для збереження останньої версії python та пакунків, встановлених на Debian.

Все це акуратно зберігається в папці, що дозволяє дуже легко видалити їх згодом, якщо ви хочете. Інсталятор також додає шлях до вашого bashrc (додайте його самостійно, якщо використовується інша оболонка).

Він поставляється з pip, а також conda, який є іншим менеджером пакунків, ніж може бути корисним для складніших пакунків, таких як numpy. Miniconda - це голі кістки, а Anaconda - це повна установка з багатьма пакетами, в першу чергу призначеними для аналізу даних.

Швидко:

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

Читайте та приймайте ліцензію, якщо ви не використовуєте шлях bash add: export PATH="/home/$USER/miniconda3/bin:$PATH"

Тест:

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

Встановити з PyPi:

# pip install fava

Встановити з conda:

# conda install numpy

Коли ви хочете її видалити, видаліть папку ~/miniconda3та шлях у вашому файлі bashrc.


Після нескінченних проблем із встановленням python з джерела, ця версія працювала ідеально! Зауважте, що якщо ви хочете працювати з virtualenv (обгорткою) для управління навколишнім середовищем, вам потрібно додати дирекцію бібліотеки мініконди LD_LIBRARY_PATH. Наприклад: додайте export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"до свого .bashrc.
jrast

"Інсталятор також додає шлях до вашого bashrc" Це основна причина, чому я не використовую анаконда. Мовчки маскувати існуюче середовище пітона - це не менш здорово.
MisterMiyagi

3

Debian не має Python 3.6 у своїх сховищах. Ось знімок поточного статусу 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

Ви можете перевірити їх тут .

Ви можете встановити 3.6 або з джерела, або використовуючи щось на зразок Linuxbrew для встановлення домашнього каталогу.


3

З цим

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

Успішно працюють.

Більше: встановіть python3.6 за замовчуванням

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

Негайно :

python --version
Python 3.6

Слід прочитатиsudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
скорочення

3
Ця відповідь така ж, як і прийнята відповідь, прийшла через рік, і все ж не дає правильних команд.
До 마 SE

1

Python 3.6 (хоча rc1) щойно прийшов в експериментальний Debian. Мені вдалося успішно побудувати це на стабільній Debian (jessie). Ознайомтеся з останніми кроками вбудованої конструкції нижче.

Однак це не означає, що він буде встановлений успішно і не спричинить проблем. Наступним кроком було б перевірити його на тестовій VM стабільності. Якщо когось хвилює, я можу спробувати - або хтось інший міг би спробувати.

Правильна версія випуску невдовзі має надійти в Debian.

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.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.