Як встановити 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.