Как установить Python 3.6?


108

Я хотел бы установить последнюю версию 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, я просто скачал исполняемый файл, несколько раз нажал «Далее», и все готово. Какова правильная и официально принятая процедура для установки 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 .
2015 г.

1
Python 3.6 (хотя rc1) только что прибыл в экспериментальный Debian. Вероятно, можно отправить его обратно Джесси, возможно, с небольшим изменением.
Фахим Митха

Обновить. Это успешно завершено для меня в стабильной версии Debian (Джесси). Однако это не означает, что он будет успешно установлен и не вызовет проблем. Следующим разумным шагом было бы проверить его на тестовой ВМ стабильной. Кто-нибудь заботится?
Фахим Митха

Ответы:


67

От редакции.
Пожалуйста, прочитайте комментарии к этому ответу.


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, которую вы сейчас используете (вероятно, «стабильная»), «нестабильная» плюс «экспериментальная». Это будет намного хуже, чем просто дистрибуция до нестабильной версии и сбор нескольких пакетов из экспериментальных, или (еще лучше, оставаясь со стабильной сборкой из вишневых портов и / или нестабильной и / или экспериментальной). Отказ от этого будет почти невозможен. НЕ рекомендуется, если у вас мало опыта работы с
cas

8
отредактированный ответ, чтобы установить стабильный выпуск по умолчанию для apt. и удалил сумасшедшее «обновление apt-get» (которое обновляет все до последних версий, доступных в нестабильных или экспериментальных версиях, за исключением всего, что может привести к удалению другого пакета). Это должно сделать эту процедуру намного менее опасной, но все же небезопасной. И все же не рекомендуется для новичков. «Эксперимент» не для случайного использования, а для странных, непроверенных, возможно сломанных вещей, которые могут конфликтовать или ломать вещи даже в «нестабильном». Он также используется в качестве промежуточной площадки для больших мультипакетных обновлений.
Cas

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

4
Не пытайтесь это сделать - отмена займет у вас много времени
user3728501

2
По состоянию на 15.09.2008 это все еще рискованно: я попробовал это на Raspberry Pi с растяжкой Debian и столкнулся с ошибками сегментации после того, как обновление Python 3.6 от тестирования вытянуло обновленные libc6 и libc6-dev.
Дрота

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может перезаписывать или маскировать двоичный файл Python. 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). например:

/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умолчанию.
Маркус Штраус

3
Возникли проблемы с этим ответом (например, модуль SSL недоступен или отсутствует zlib)? См .: stackoverflow.com/a/41601137/972128
kkurian

11
Отказ от ответственности: это занимает более 20 часов на маломощных устройствах, таких как ноль Pi.
Антуан Лизе

2
версия 3.7находится вне
Timo

32

Официальная рекомендация: «На самом деле вам не нужно новое программное обеспечение»

Не страдайте от синдрома блестящего нового материала - DontBreakDebian | Debian Wiki

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

Если вы извлекаете исходные тексты Python, --prefixсобираете интерпретатор 3.6, используя для контроля, где он заканчивается, а затем используете его 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
Это следует общему правилу Python «Практичность побеждает чистоту». Я склонен устанавливать pythons из исходных пакетов в / opt / python-xyz, а затем запускать приложения из своих собственных virtualenvs.
згода

1
Важное примечание: если вы собираетесь сделать что-то подобное: убедитесь, что любой пользователь, выполняющий ваш процесс Python, не может изменить virtualenv
Грегори Нисбет,

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
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - Из Обзора
Archemar

Ты прав, изменит ответ.
Щайба

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: export PATH="/home/$USER/miniconda3/bin:$PATH"

Контрольная работа:

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

Установить из PyPi:

# pip install fava

Установить из Конды:

# conda install numpy

Если вы хотите удалить его, удалите папку ~/miniconda3и путь в вашем bashrc.


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

«Установщик также добавляет путь к вашему bashrc». Это основная причина, по которой я не использую anaconda. Молча маскировка существующей среды Python, по меньшей мере, вредна для здоровья.
Мистер Мияги

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
Этот ответ такой же, как принятый ответ, пришел через год, но не дает правильных команд.
до

1

Python 3.6 (хотя rc1) только что прибыл в экспериментальный Debian. Я смог успешно построить это на стабильной Debian (Джесси). Смотрите последние шаги сборки, вставленные ниже.

Однако это не означает, что он будет успешно установлен и не вызовет проблем. Следующим разумным шагом было бы проверить его на тестовой ВМ стабильной. Если кому-то все равно, я могу попробовать - или кто-то другой может попробовать.

Соответствующая версия релиза должна появиться в нестабильной версии 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.

0

По состоянию на сентябрь 2019 года, последняя стабильная версия Debian (Buster) имеет Python 3.7. Таким образом, правильной и официально принятой процедурой будет обновление до Debian Buster .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.