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

160

Я хочу установить последний tar-файл Python на Ubuntu, загруженный с Ссылка .

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

./configure
make
make install

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

    
задан mohammads 05.02.2012 в 12:02
источник

6 ответов

185

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

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 ).

    
ответ дан Achu 05.02.2012 в 12:20
источник
162

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

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

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

    
ответ дан brousch 05.02.2012 в 14:40
24

Продолжая документировать это для последних выпусков Ubuntu 1 : для сервера Ubuntu 16.04.1, по умолчанию Python - версия 3.5, а Python 2.7 установлен not по умолчанию , При новой установке (обратите внимание, что даже не существует исполняемого файла 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: вам, вероятно, придется самому обновить пипс (как 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 modules , а не последних < эм> питон . Итак, теперь проблема «последней версии Python» перенесла частично из OS repos & amp; apt и в PyPI & amp; pip .)     

ответ дан michael 29.09.2016 в 08:50
11

12,04

Если вы следуете ответу Achu , то термин 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
    
ответ дан ThatGuy 26.07.2012 в 14:37
3

Вы также можете скачать и установить его с помощью 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
    
ответ дан Whispered 30.03.2017 в 07:38
0

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

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

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

Установить pyenv

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

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-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. Сделайте его виртуальным, чтобы вы могли сделать других позже, если хотите

    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 или Python, установленных на нем или под ним, они будут подкреплены pyenv.

Устранение неполадок

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

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

    1. Если вы не использовали сценарий установщика, скорее всего, вы установили только корневой пакет pyenv. См. pyenv-virtualenv для инструкций по добавлению плагина
    2. Если вы использовали сценарий установщика, проверьте, отображается ли оно с помощью pyenv commands .
ответ дан Nick T 15.10.2018 в 20:05

Ознакомьтесь с другими вопросами по меткам