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

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

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

./configure
make
make install

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

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

6 ответов

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

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). например).

0
ответ дан 30 March 2017 в 04:36

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

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7
[ 115] Также доступны другие версии, такие как python2.4 или python3.6 и т. Д.

0
ответ дан 30 March 2017 в 04:36

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
0
ответ дан 30 March 2017 в 04:36

Вы также можете скачать и установить его через 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
0
ответ дан 30 March 2017 в 04:36

Продолжение зарегистрировать это для последней Ubuntu releases1: для сервера Ubuntu 16.04.1 Python по умолчанию является версией 3.5, и Python 2.7 не установлен по умолчанию. На новой установке (отмечают, что даже нет a 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 устанавливать любые необходимые системные зависимости, как graphviz или базовые системные библиотеки.

$ 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

Таким образом для установки зернышка, снова, это столь же легко как 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)

И одна последняя вещь, прежде чем можно будет пойти и начать устанавливать все любимые модули python PyPI: необходимо будет, вероятно, обновить, побеждают себя (и 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 заботятся о), которые находятся теперь в общественности repos, очень стабильны, поэтому теперь мы действительно только должны волноваться об установке последних модулей Python, не последнего Python. Таким образом, теперь Python "проблема последней версии" переместился частично из ОС repos и apt и в PyPI и pip.)

26
ответ дан 30 March 2017 в 04:36

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

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

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

Установка pyenv

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

    sudo apt-get install -y git
    sudo 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. Добавьте init строки к Вашему ~/.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/зернышком и т.д. Это Ваше.

Если Вы хотите вычистить свои библиотеки позже, Вы могли бы удалить virtualenv (pyenv uninstall general) или сделайте новый (pyenv virtualenv 3.6.0 other_proj). У Вас могут также быть среды, активные на каталог: pyenv local other_proj отбросит a .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.
0
ответ дан 30 March 2017 в 04:36

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

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