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

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

Является ли это правильным способом установки?

./configuremakemake install

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

Сначала установите некоторые зависимости:

sudo apt-get install build-essential checkinstallsudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

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

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

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

tar -xvf Python-$version.tgzcd Python-$version

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

./configuremakesudo checkinstall

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

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

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

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

Продолжаем документировать это для последних выпусков 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 * python3Try: 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.7Reading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following additional packages will be installed:  libpython2.7-minimal libpython2.7-stdlib python2.7-minimalSuggested packages:  python2.7-doc binutils binfmt-supportThe following NEW packages will be installed:  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal0 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 pythonpython3 is /usr/bin/python3python2.7 is /usr/bin/python2.7python3.5 is /usr/bin/python3.5bash: type: python2: not foundbash: type: python: not found

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

$ type pip3 pip2 pipbash: type: pip3: not foundbash: type: pip2: not foundbash: 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 installerpython-pip-whl - alternative Python package installerpython3-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-pipReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe 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-devSuggested 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-docThe 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-dev0 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/python3python2 is /usr/bin/python2python is /usr/bin/pythonpython2.7 is /usr/bin/python2.7python3.5 is /usr/bin/python3.5

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

$ type pip pip2 pip3pip is /usr/bin/pippip2 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-pipReading package lists... DoneBuilding dependency tree       Reading state information... DoneThe following additional packages will be installed:  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-devSuggested packages:  python-setuptools-docThe following NEW packages will be installed:  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev0 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 pip3python is /usr/bin/pythonpython2 is hashed (/usr/bin/python2)python3 is hashed (/usr/bin/python3)pip is /usr/bin/pippip2 is /usr/bin/pip2pip3 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)

И последнее, прежде чем вы сможете приступить к установке всех ваших любимых модулей python PyPI: вам, вероятно, придется обновить сам 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 модули, не самый последний питон. Итак, теперь проблема с последней версией Python переместилась частично из репозиториев операционной системы & apt и в PyPI & pip.)

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

Вы также можете скачать и установить его через пьенв

#Install Pyenvgit clone https://github.com/pyenv/pyenv.git ~/.pyenvexport PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATHecho 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profileecho 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profileecho 'eval "$(pyenv init -)"' >> ~/.bash_profile#Install Pythonpyenv install 2.7.8pyenv global 2.7.8pyenv install 3.4.5pyenv global 3.4.5

В основном зеркало этот ответ с измененным вступлением

Я бы рекомендовал пьенв. Он автоматизирует процесс сборки, помимо установки зависимостей заголовка (см. Ниже). Вы можете создать и установить новую (или старую) версию Python, просто сказав pyenv install 3.6.0. Все работает от имени вашего пользователя, так что вам не нужно беспокоиться о испортил питона используется самой Ubuntu.

В отличие от некоторых опций на основе apt-repo (например, deadsnakes), он обычно будет работать в тот же день выпуска после pyenv update потому что вам не нужно ждать, пока кто-то другой упакует его. Посмотрите все версии, которые вы можете установить с помощью pyenv install --list

Установить pyenv

  1. Установите инструменты и заголовки, необходимые для создания CPythons (экзотические Pythons, такие как PyPy или Jython, могут иметь другие зависимости). Git используется pyenv, плюс он также позволяет создавать / устанавливать исходные ветви, так что вы можете установить любую версию 3.8 прямо сейчас, то есть главную ветку CPython, только что вышедшую из GitHub:

    sudo apt-get install -y gitsudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \                        libffi-dev libsqlite3-dev tk-dev# optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)sudo apt-get install -y libpng-dev libfreetype6-dev    
  2. Запустите установочный скрипт (устанавливает pyenv и некоторые очень полезные плагины pyenv от оригинального автора; см. здесь для большего)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  3. Добавьте строки инициализации в свой ~/.profile или ~/.bashrc (он упоминает об этом в конце сценария установки):

    export PATH="~/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"
  4. Перезапустите свою оболочку (закройте и откройте или exec $SHELL) или перезагрузите скрипт профиля. (с помощью, например source ~/.bashrc)

Сделано!

Настройка среды

Чтобы не трогать системный Python (как правило, плохая идея; службы уровня операционной системы могут полагаться на некоторые конкретные версии библиотек и т.д.), Создайте свою собственную среду, это просто! Даже лучше, нет sudo, для этого или pip устанавливает!

  1. Установите предпочитаемую вами версию Python (это позволит загрузить исходный код и создать его для вашего пользователя, ввод данных не требуется)

    pyenv install 3.6.0
  2. Сделайте это virtualenv, чтобы вы могли создавать другие позже, если захотите

    pyenv virtualenv 3.6.0 general
  3. Сделайте его глобальным активным (для вашего пользователя)

    pyenv global general
  4. Делайте то, что вы хотите, с помощью Python / pip и т.д. Это твое.

Если вы хотите очистить свои библиотеки позже, вы можете удалить virtualenv (pyenv uninstall general) или создайте новый (pyenv virtualenv 3.6.0 other_proj). Вы также можете иметь среды, активные для каждого каталога: pyenv local other_proj уронит .python-version файл в вашу текущую папку, и каждый раз, когда вы вызываете Python или установленные pip утилиты Python из него или под ним, они будут заменены pyenv.

Диагностика

  • bash: pyenv: command not found, fish: Unknown command 'pyenv'

    1. Проверьте свой $PATH, должна быть одна запись , которая заканчивается чем - то вроде .pyenv/bin. Если он отсутствует, убедитесь, что вы следовали #3 И №4 (перезагрузите свою оболочку) в разделе Install pyenv выше.
  • pyenv: no such command 'virtualenv'

    1. Если вы не использовали сценарий установки, вы, скорее всего, установили только корневой пакет pyenv. Видеть pyenv-virtualenv для получения инструкций по добавлению плагина
    2. Если вы использовали сценарий установки, проверьте, отображается ли он с pyenv commands.

@jargonjunkie ты отклонился от темы, но правильно. Если вопрос заключается в том, “как мне установить python 2.7 на ubuntu 16.04 +”, который он есть (поскольку 16.04 теперь доступен, и это моя точка зрения), то вы просто "sudo apt-get install python2.7`. Это не только проще, это единственный правильный ответ, поскольку это единственный способ, которым вы сможете обрабатывать установку модулей python с помощью apt-get и их зависимостей по очереди.

В свое время, я полагаю, это было задано для того, чтобы установить newer версию python на Ubuntu. Теперь требуется установить older версию python на Ubuntu (потому что нам still требуется python 2.7 для многих вещей)… tl; dr: этот ответ больше не является актуальным / правильным. Вместо этого, предполагая, что python3 установлен по умолчанию (и, возможно, минимальный python2.x), затем запустите: sudo apt-get install python-2.7 python-pip

@michael_n о чем ты говоришь? компиляция из исходного кода не делает этот ответ неправильным или устаревшим. это просто другой метод. при необходимости вы можете использовать apt для автоматизации этого процесса.

ты используешь то, что тебе нужно. Я действительно не понимаю, как это подтверждает ваше утверждение о том, что это устарело. как вы сами сказали, вы используете его, когда вам нужно, потому что он может быть недоступен. Например, подсистема Windows для linux использует некоторые устаревшие программные пакеты, даже если дистрибутив ubuntu 16.04.1 (бета-версия) и использует python2.6.2 и python3, даже если текущий - python2.7.12. В этом случае я должен выполнить компиляцию, если мне нужны обновленные пакеты

ты совершенно прав. вы можете легко индексировать зависимости с сайта. и на самом деле, подсистема использует 14.04.5 и использует 2.7.2 по умолчанию (вместе с py3, конечно). apt-get не всегда может быть опцией, и это полезно для kmow, что dpkg есть. это полезно для пользовательских сценариев, где эти параметры могут быть недоступны и не всегда являются лучшим выбором (очевидно, что если вы можете использовать apt, вы должны использовать apt). У меня есть несколько пользовательских окружений, которые не поддерживают большое количество пакетов debian, поэтому я довольно часто использую dpkg. знание того, как использовать его в крайнем случае, может быть чрезвычайно ценным.

надеюсь, это поможет проиллюстрировать (добавлен ответ). экосистема python очень специфична / привередлива, и вы можете легко попасть в “ад зависимостей”, если не будете тщательно создавать свою среду python http://askubuntu.com/a/831075/17060