Як встановити іншу версію Python за допомогою apt-get?


125

Як я можу встановити іншу версію Python за допомогою apt-get?

Очевидно, я усвідомлюю, що можу встановити, використовуючи вихідну кульку tar, проте я вважаю за краще не встановлювати з джерела, а замість цього використовувати менеджер пакунків, тому що для цього він потрібен. Напевно десь авторитетні будують файли .deb для останніх релізів Python (чому python.org не виходить за межі мене), на які я можу посилатись.

Що мені потрібно зробити, щоб посилатися на них та які проблеми можуть виникнути при переході до наступної версії?

Якщо немає можливості окрім побудови з джерела, чи є пакет (псевдо), який я можу встановити, який забезпечить усі необхідні залежності, не потребуючи пошуку та встановлення кожної окремо? Так що я не отримую:

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


ви коли-небудь отримували E: Couldn't find any package by regex 'python3.5'і, таким чином, не вдалося встановити через apt-get install python3.5?
Чарлі Паркер

подібне запитання: askubuntu.com/questions/310441/…
Чарлі Паркер

кілька хороших пропозицій тут: quora.com/…
Чарлі Паркер

1
@CharlieParker Ви намагалися встановити Anaconda ?
М. Бесерра

Відповіді:


169

Фелікс Крулл запускає PPA, пропонуючи в основному будь-яку версію Python (серйозно, існує 2.3.7 збірка для яскравих ...) для багатьох релізів Ubuntu за адресою https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa .

Зробіть звичайне:

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

Він не замінить існуючий, python3.4який як і раніше позначений як python3.

НЕ міняйте симпосилання! Мабуть, існує багато системних функцій, які не працюють належним чином із python3.5.

Я спробував це, і після цього не вдалося відкрити термінал, оновлення програмного забезпечення, ...

cd /usr/bin
sudo rm python3

Оновлення до Wily адаптуватиме мета-пакет, на який python3слід вказувати python3.5. Я не чекаю жодних зривів, але на даний момент іноземний сховище вже не потрібен. Щоб бути справді безпечним, ви можете очистити PPA перед оновленням.


5
для noob там, не символізуйте! також не символізуючи просто означає, що вам потрібно набрати python3.5 з командного рядка, щоб запустити python 3.5
Кріс Хоукс

4
Чи можете ви вказати мені, як я можу використовувати 3.4-піп з цим 3.5?
Грооша

2
@ kondra007 Я дотримувався вказівок з pip.pypa.io/en/stable/installing (будь ласка, прочитайте попередження там), і ці дві команди wget https://bootstrap.pypa.io/get-pip.py; sudo python3.5 get-pip.pyдали мені робочий pip для python 3.5, але pip3.4 вже не працює. Якщо хтось краще знає, будь ласка, прокоментуйте
ndemou

2
Також встановіть python3.5 за замовчуванням ~$ vim ~/.bashrcі додайте це alias python=python3.5. потім~$source ~/.bashrc
ПК

1
Поради: якщо add-apt-repository: command not found, запустіть apt-get install software-properties-common python-software-propertiesдля встановлення
Mithril

35

Ця посилання на Youtube допомогла мені встановити його.

Етапи:

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

Щоб перевірити, чи встановлено python, введіть python3.5інше:

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

3
ОП заявив, що не хоче збирати з джерела
Майкл Бейтс

3
Так, ти правий. Також компіляція з джерела може спричинити деякі проблеми залежності в подальшому. Але саме так я і вирішив. Якщо є кращий спосіб, я б точно хотів знати.
joydeep bhattacharjee

5
Розглянемо ./configure --enable-optimizations stackoverflow.com/questions/41405728 / ...
warvariuc

1
@CharlieParker, оскільки Python не створений для конкретної ОС. Це призначено для запуску на будь-якій платформі. Для Linux це означає, що або кожну версію потрібно компілювати і поширювати для кожної версії кожного дистрибутива Linux (яких існує багато), або вони поширюють джерело і дозволяють користувачеві складати його самі в середовищі, в якому він буде б / в. Останнє набагато більш здійсненне.
CJStuart

2
Вам також потрібен компілятор c / c ++ відapt-get install build-essential
bato3

13

Просто виконайте ці кроки (перевірено):

Крок 1 - Встановіть необхідні пакети

Використовуйте наступну команду, щоб встановити передумови для Python перед його встановленням.

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

Крок 2 - Завантажте Python 3.5.2

Завантажте Python за допомогою наступної команди з офіційного сайту python. Ви також можете завантажити останню версію замість зазначеної нижче.

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

Тепер витягніть завантажений пакет.

sudo tar xzf Python-3.5.2.tgz

Крок 3 - Складіть джерело Python

Використовуйте нижче набір команд для складання вихідного коду python у вашій системі за допомогою altinstall.

cd Python-3.5.2
sudo ./configure
sudo make altinstall

make altinstallвикористовується для запобігання заміні бінарного файлу python за замовчуванням /usr/bin/python.

Крок 4 - Перевірте версію Python

Перевірте останню версію встановленого python за допомогою команди нижче.

$ python3.5 -V

Python 3.5.2

Джерело .


2
+1 за використання altinstall за замовчуванням. Немає багато реальних сценаріїв, де можна жити лише з однією версією. Навіть із систем із Python3 за замовчуванням, можливо, ви будете змушені встановлювати Python як зворотний -> Python2 замість цього або додавати Python2.
erm3nda

1
Я отримав помилку, як описано тут - bugs.python.org/issue31652 , щоб sudo apt-get install libffi-devїї усунути.
Нішан Чатхуранга

Я також додам, sudo apt-get install liblzma-devщоб включити підтримку lzma.
v.grabovets

6

Наскільки я можу сказати, принаймні в докерному контейнері можна остаточно apt-getпітон 3.

Спочатку я наткнувся на контейнер ubuntu з контейнером:

docker run -it --rm ubuntu:latest bash

то чомусь потрібно було оновити деякі речі ubuntu, так що я це зробив (всередині контейнера):

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

а потім я просто встановив python3 і, схоже, автоматично отримав python 3.5:

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

і перевірити, чи працює програма pip, можна щось завантажити:

pip3 install tensorflow

все, здається, працює добре для мене.

Важлива примітка. Здається, якщо у вас вже встановлений python 3.4, він apt-get install python3не працює, оскільки він говорить, що у вас його вже є. Здається, це була одна з моїх проблем, тому що я починав із зображення докера з tensorflow (зокрема gcr.io/tensorflow/tensorflow:latest-devel-py3), і щось із цього зображення (я вважаю, що у них вже є python 3.4, але це може щось інше) не дозволило мені оновити мій python, щоб отримати python 3.5.


Кредит: я виявив це, коли запитав таке: https://stackoverflow.com/questions/42122826/can-one-use-python-3-5-in-a-docker-container-based-out-of-the -тендорфлоу-докер


Примітка: також можна просто встановити Anaconda. Для прикладу докера можна зробити:

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

з їх офіційного веб-сайту: https://hub.docker.com/r/continuumio/anaconda3/

Це рішення встановлює python 3.6, але я впевнений, що якщо ви заглянете в нього, ви можете отримати python 3.5, якщо це те, що ви хочете.

Примітка. Ви, ймовірно, в будь-якому разі використовуєте віртуальне середовище, наприклад, virtual env або conda / anaconda, якщо ви все одно не використовуєте докер. Просто хотів нагадати людям.


1
"in docker контейнер" - це дуже загальне твердження: все залежить від того, на якому зображенні базується контейнер, наприклад, на якій версії Ubuntu. Крім того, можуть бути незначні версії на зразок 3.5 або 3.6, які недоступні в одній версії Ubuntu (наприклад, 14.04)
giorgiosironi

2

Існує ряд нових дистрибутивів python, доступних для встановлення через apt-get, перелічені в пакетах Ubuntu

як приклад, на даний момент доступні наступні версії:

пітон2.7

пітон3.2

пітон3.4

пітон3.5

пітон3.6

Доступність залежить від випуску Ubuntu до певної міри. Наприклад, 3.5 доступний для Xenial, Yakkety, і Zesty, а 3.6 доступний для Yakkety і Zesty, але ви повинні включити сховище Universe, якщо його не включено, щоб отримати їх через apt-get. Щоб перевірити наявність вашої версії Ubuntu, перевірте посилання вище.

Швидкий зазир вказує на те, що ця відповідь також все ще справедлива, оскільки у PPA є 3,6 навіть для «Довірливих».


версії Python, доступні в Ubuntu Repo , не є новітньою версією Python .
yaitloutou

@yaitloutou Питання каже: "новіший", а не "найновіший". Без сумніву, сміливо пишіть кращу відповідь.
Старійшина Гек

Ви маєте рацію, але оскільки новіше відносно того, що не вказано, я трактував це як новітнє :)
yaitloutou

@yaitloutou Не соромтеся і будь-ласка пишіть кращу відповідь! Я впевнений, що це буде оцінено.
Старійшина Гек

Я тільки почав тут активно активуватися, і все ще вчуся. Вибачте, якщо ви знайдете ваш коментар до вашої відповіді нав'язливим
yaitloutou

0

Я б подумав використовувати віртуальні середовища замість установки версій python через apt-get.

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

Крім того, вам не доведеться отримувати доступ до sudo під час встановлення будь-якої бібліотеки (через pip тощо).


11
Я думаю, вам потрібно встановити потрібну версію python, перш ніж використовувати її у віртуальному середовищі.
Nzbuu

1
Ви встановлюєте потрібну версію python у віртуальному середовищі, ніж змінюєте свій пов'язаний з python шлях, просто запустивши скрипт "activate" у віртуальному середовищі.
devrimbaris

Це насправді саме те, що я хочу зробити - саме перше, що я спробував зробити після наступної відповіді @ Нефенте, було вказувати на його використання virtualenv -p. Але це підірвало "ImportError: не можна імпортувати ім'я" HTTPSHandler "".
Майкл Шепер

1
чому це було знято? віртуальні оточення зазвичай працюють чудово.
Чарлі Паркер

як встановити віртуальну env в ubuntu (як у вашій пропозиції), але з python 3.5?
Чарлі Паркер

0

Conda активно оновлюється та дозволяє встановлювати декілька версій python в керованих venvs, не змушуючи їх самостійно налаштовувати. Проблеми шляху бінарного розширення, можливо, були вирішені у багатьох використовуваних ланцюгами залежностей / піп-ланцюгах, якими керує анаконда.

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