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


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

Это правильный способ установки?

./configure
make
make install

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


157
2018-02-05 12:02


происхождения


Когда-то я предполагал, что это было задано, чтобы установить новее версия python на Ubuntu. Теперь необходимо установить старшая  версия python на Ubuntu (потому что мы все еще требуют python 2.7 для многих вещей) ... tl; dr: этот ответ больше не является текущим / правильным. Вместо этого, предполагая, что python3 установлен по умолчанию (и, возможно, минимальный python2.x), выполните: sudo apt-get install python-2.7 python-pip - michael
@michael_n, о чем вы говорите? компиляция из источника не делает этот ответ неправильным или устаревшим. это просто другой метод. вы можете использовать apt для автоматизации процесса для вас, если это необходимо. - jargonjunkie
u использовать то, что вам нужно. Я действительно не вижу, как это подтверждает ваше утверждение об устаревании. как вы сказали сами, и используйте его, когда вам нужно, потому что он может быть недоступен. Например, подсистема Windows для linux использует некоторые устаревшие программные пакеты, даже в дистрибутиве ubuntu 16.04.1 (бета) и использует python2.6.2, а python3 даже для текущего - python2.7.12. В этом случае я должен компилировать, если я хочу обновлять пакеты - jargonjunkie
@jargonjunkie, вы не в тему, но правильно. Если вопрос "как установить python 2.7 на ubuntu 16.04+" который он (с 16 апреля теперь доступен, что является моей точкой), тогда вы просто sudo apt-get install python2.7, Это не только проще, это единственный правильный ответ, так как это единственный способ, с помощью которого вы сможете обрабатывать модули python с помощью apt-get и их зависимостей по очереди. - michael
надеюсь, это поможет проиллюстрировать (добавленный ответ). экосистема python очень специфическая / фиктивная, и вы можете легко попасть в «адский ад», если не будете тщательно строить свою среду python askubuntu.com/a/831075/17060 - michael


ответы:


Во-первых, установите некоторые зависимости:

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

Затем загрузите, используя следующую команду:

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

Извлеките и перейдите в каталог:

tar -xvf Python-$version.tgz
cd Python-$version

Теперь установите с помощью команды, которую вы только что пробовали, используя checkinstall вместо этого упростить удаление при необходимости:

./configure
make
sudo checkinstall

+ Изменить version в зависимости от того, какая версия вам нужна (version=2.7.1 или version=3.6.0, например).


184
2018-02-05 12:20



использование sudo make install и не altinstall установить его как стандартную версию python - Shagun Sodhani
использование CXX=g++ ./configure если ./configure проблемы, предупреждение g ++ не было найдено - srj
после установки, как указано выше, какие команды я запускаю на консоли, чтобы проверить, действительно ли она установлена? - Ciwan
Весьма необычно, что лучший ответ на простой вопрос «как установить Python» будет иметь такое страшное предупреждение, это как «это лучший способ, который мы знаем, чтобы установить Python, и это может очень сильно нарушить вашу систему» ​​... Это также очень удивительно, что на официальном сайте Python загружено множество загрузок, а не на одну страницу инструкций по установке. - patb
pat - лучший ответ на простой вопрос «как установить python» - это sudo apt-get install python, более сложным ответом является «как установить последний python ", причем импликация является« из источника ». У вас будет такая же проблема на любой ОС, если вы не установите предварительно скомпилированные двоичные файлы от стороннего производителя, что опять-таки рискованно для любой ОС (и сильно варьируется в разных ОС) . Также этот ответ с 2012 года, для более свежих советов см. askubuntu.com/questions/101591/... - michael


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

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

Другие версии, такие как python2.4 или python3.6и т. д. Также доступны.


159
2018-02-05 14:40



Примечание программы. Если вы используете 10.04, вам может потребоваться установить свойства python-software до использования add-apt-repository. - Craig Maloney
Рекомендуется создавать python в локальной среде, а не устанавливать его из двоичных файлов предварительной сборки - pylover
+1 :) really have a burning desire to compile it yourself - Watt
Пропустили упомянуть, что: 1. ppa официально не одобряется, поэтому наиболее безопасный способ заключается в создании из источника. 2. это приведет к глобальному питону,sudoers не могут изменять или устанавливать пакеты, а не локальные. 3. Несколько питонов могут быть установлены локально в разных местах путем создания из источника. - Ioannis Filippidis
apt-get install python2.7Это установит двоичный python2.7 вместо python ... уродливый !! - Dhawal


Продолжая документировать это для последних выпусков 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, а также sudo apt-get dist-upgrade (пожалуйста, обратите внимание, что именно эти команды на самом деле делают, я предполагаю, что здесь установлена ​​новая версия.)

Установка 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 :

$ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

Вам понадобятся оба python-pip для Python 2.7 pip и python3-pip для Python 3 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 и 3.5 (в основном, только две версии платформы Python, о которых люди заботятся), которые сейчас находятся в публичных репозиториях, очень стабильны, поэтому теперь нам действительно нужно только беспокоиться об установке последних питон модули, а не последние питон, Итак, теперь проблема «последней версии Python» переместилась частично из ОС repos & apt и в PyPI & pip.)


24
2017-09-29 08:50



Следуя этим инструкциям по 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 -> pip 9.0.1 из /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12 - Robert Lujo
Действительно полезный ответ - большое спасибо! - Failed Scientist
Простите мое невежество, но могу ли я знать, что означает «хэширование» при отображении версий Python? - Failed Scientist
@TalhaIrfan Это хороший вопрос (и если вы разрешите упрощенный ответ): когда команда вводится в bash (как и в большинстве оболочек), cmd может быть псевдонимом, функцией или исполняемым файлом, найденным в $PATH, Env var PATH представляет собой длинный список каталогов с буквально тысячами файлов в нем. Чтобы ускорить поиск исполняемого файла, оболочка использует кэшированную хэш-таблицу для быстрого поиска. Он может стать устаревшим, поэтому «хэширование» позволяет вам знать, что он «запомнил» эту команду, сопоставленную с этим исполняемым файлом unix.stackexchange.com/questions/5609/... - michael
@gaia, вы можете задать отдельный вопрос, так как для его выяснения может потребоваться больше времени (или если что-то изменилось с тех пор, как я написал это). Возможно, сначала проверьте, что и то и другое  pip (2,7) pip3 (3.x) были полностью установлены / модернизированы, а не только первые (т. Е. sudo apt-get install python-pip python3-pip а также sudo -H python2 -m pip install --upgrade pip а также sudo -H python3 -m pip install --upgrade pip  ... Или если это действительно проблема разрешения (обозначается как «работает с sudo»), тогда будет немного сложнее отследить. - michael


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
2017-07-26 14:37





Вы также можете скачать и установить его через 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
2018-03-30 07:38



Это самый чистый способ получить действительно обновленную версию Python в более старой версии Ubuntu. Он также включает поддержку virtualenv, через pyenv-virtualenv плагин, упрощающий установку приложений с различными требованиями к модулю без столкновений. - RichVel
Два предупреждения о pyenv: (1) он работает только из оболочки bash (или, может быть, zsh, но, конечно, не тире, которая является / bin / sh на Ubuntu), и (2) для нее требуется оболочка входа (например, bash --login), что не всегда легко достичь, например. от Ansible. Лучше всего для интерактивного использования, менее подходит для серверов сценариев. - RichVel