Как установить последнюю версию Python 2.7.X или 3.X на Ubuntu?

Я хочу установить последний tar-архив Python на Ubuntu, загруженный с http://python.org/download/.

Правильно ли это установить?

./configure
make
make install

Если нет, как это сделать?

1
задан 30 March 2017 в 04:36

4 ответа

Если у вас действительно нет горячего желания скомпилировать его самостоятельно, предпочтительным способом является использование DeadSnakes PPA для установки версий Python, которые не включены по умолчанию:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7

Другие версии, такие как python2.4 или python3.6 и т. д.

151
ответ дан 25 May 2018 в 14:33
  • 1
    Примечание программы. Если вы используете 10.04, вам может потребоваться установить свойства python-software до использования add-apt-repository. – Craig Maloney 10 April 2012 в 00:59
  • 2
    Рекомендуется создавать python в локальной среде, а не устанавливать его из двоичных файлов предварительной сборки – pylover 22 October 2013 в 06:10
  • 3
    +1 :) really have a burning desire to compile it yourself – Watt 14 November 2013 в 04:35
  • 4
    Пропустил упомянуть, что: 1. ppa официально не одобрен, поэтому наиболее безопасный способ - построить из источника. 2. это приведет к глобальному питону, что не sudo не могут изменять или устанавливать пакеты, а не локальные. 3. Несколько питонов могут быть установлены локально в разных местах путем создания из источника. – Ioannis Filippidis 9 August 2014 в 06:06
  • 5
    apt-get install python2.7 Это установит двоичный python2.7 вместо python ... уродливый !! – Dhawal 24 December 2015 в 23:35

Продолжая документировать это для последних выпусков Ubuntu1: для сервера Ubuntu 16.04.1, по умолчанию Python - версия 3.5, а Python 2.7 по умолчанию не установлен. На новой установке (обратите внимание, что даже исполняемый файл python не существует:

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: sudo apt install <selected package>

Примечание: перед продолжением вы, вероятно, захотите быстро сделать sudo apt-get update, sudo apt-get upgrade и [ f16] (обратите внимание, что именно эти команды на самом деле выполняются, я приступаю к новой установке здесь.)

Установка python 2.7 проста:

$ sudo apt-get install python2.7

Исходный вывод установки python 2.7 выглядит следующим образом:

$ sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

После установки python 2.7,

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

Но проблема все еще сохраняется, поскольку вы еще не можете установить PyPI модули через pip - например, если вам нужен ноутбук jupyter или последний scipy или numpy (и т. д.), вы захотите установить pip, а затем pip install, и по-прежнему переключитесь на apt-get, чтобы установить любые необходимые не зависимости, такие как графические или основные системные библиотеки.

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Итак, чтобы установить pip, опять же, это так же просто, как sudo apt-get install python-pip:

Для Python 2.7 pip и python3-pip для Python 3 pip вам понадобятся оба python-pip. Установка через apt-get обязательно установит необходимые зависимости; например, вот выход для установки pip2:

$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

В результате получается интересная вещь: теперь у вас есть «стандартный» (и рекомендованный PEP) python2 и python3 (который являются только символическими ссылками на python 2.7 и python 3.5):

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

Вы также захотите sudo apt-get install python3-pip; перед установкой у вас есть:

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

После установки pip3,

$ sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

Результирующие версии:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

И один последний перед тем, как вы сможете пойти и начать установку всех ваших любимых модулей PyPI python: вам, вероятно, придется самому обновить сам pip (как pip2, так и pip3, а также не имеет значения, вызвано ли pip через python исполняемые файлы или исполняемые файлы pip, фактические обновления хранятся в /usr/lib):

$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...

Теперь вы можете запустить автономный pip или версию, входящую в комплект python ( через python -m pip {command}).

[1] Историческое резюме: более старый Ubuntu имел только Python 2.6, таким образом, все различные методы для установки Python 2.7+. Позже, после того, как Python 2.7 был добавлен в общедоступные репозитории, у нас все еще была такая же проблема, чтобы установить новейший Python 2.7 с последними исправлениями, которые также (часто) были необходимы. Сегодня ситуация намного лучше / проще: текущий Python 2.7 и amp; 3.5 (в основном, только две версии платформы Python, о которых люди заботятся), которые сейчас находятся в публичных репозиториях, очень стабильны, поэтому теперь нам действительно нужно беспокоиться об установке последних модулей python, а не о последнем python. Итак, теперь проблема «последней версии Python» частично переместилась из ОС repos & amp; apt и в PyPI & amp; [F39].)

23
ответ дан 25 May 2018 в 14:33
  • 1
    Следуя этим инструкциям по Ubuntu 16.04.1 LTS успешно настроит python 2.7 и напишите так: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip install --upprade pip; # Проверка версии: $ pip --version - & gt; pip 9.0.1 из /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version - & gt; Python 2.7.12 – Robert Lujo 3 March 2017 в 14:55
  • 2
    Действительно полезный ответ - большое спасибо! – Talha Irfan 7 October 2017 в 16:30
  • 3
    Простите мое невежество, но могу ли я знать, что такое хэширование? при отображении версий Python? – Talha Irfan 7 October 2017 в 16:33
  • 4
    @TalhaIrfan Это хороший вопрос (и если вы разрешите упрощенный ответ): когда команда вводится в bash (как и в большинстве оболочек), cmd может быть псевдонимом, функцией или исполняемым файлом, найденным в [ f1]. Env var PATH - длинный список каталогов с буквально тысячами файлов в нем. Чтобы ускорить поиск исполняемого файла, оболочка использует кэшированную хэш-таблицу для быстрого поиска. Он может стать устаревшим, поэтому "хэшированный" позволяет вам знать, что это «запомнилось». эта команда сопоставлена ​​с этим исполняемым файлом unix.stackexchange.com/questions/5609/… – michael 8 October 2017 в 10:54
  • 5
    @michael Большое спасибо! Это действительно полезный ответ: краткая и точная точка! – Talha Irfan 8 October 2017 в 10:57

12.04

Если вы следуете за ответом Ачу, то термин libread5-dev следует изменить на libreadline-gplv2-dev. Таким образом, полная команда будет:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
11
ответ дан 25 May 2018 в 14:33

Вы также можете скачать и установить его с помощью pyenv

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5
2
ответ дан 25 May 2018 в 14:33
  • 1
    Это самый чистый способ получить действительно обновленную версию Python в более старой версии Ubuntu. Он также поддерживает виртуальную поддержку через плагин pyenv-virtualenv, что упрощает установку приложений с различными требованиями к модулю без столкновений. – RichVel 6 May 2017 в 18:35
  • 2
    Два предупреждения о pyenv: (1) он работает только из оболочки bash (или, может быть, zsh, но, конечно, не тире, которая является / bin / sh на Ubuntu), и (2) для нее требуется оболочка входа (например, bash --login), что не всегда легко достичь, например от Ansible. Лучше всего для интерактивного использования, менее подходит для серверов сценариев. – RichVel 8 May 2017 в 10:10

Другие вопросы по тегам:

Похожие вопросы: