Questão Como faço para instalar o mais recente Python 2.7.X ou 3.X no Ubuntu?


Eu quero instalar o último tarball Python no Ubuntu, baixado do http://python.org/download/.

Esta é uma maneira correta de instalar?

./configure
make
make install

Se não, como faço isso?


157
2018-02-05 12:02


origem


Ao mesmo tempo, imagino que isso foi solicitado, a fim de instalar um mais recente versão do python no Ubuntu. Agora, é necessário instalar um Mais velho  versão do python no Ubuntu (porque nós ainda requer python 2.7 para muitas coisas) ... tl: dr: esta resposta não é mais atual / correta. Em vez disso, supondo que o python3 esteja instalado por padrão (e talvez um python2.x mínimo), execute: sudo apt-get install python-2.7 python-pip - michael
@michael_n do que você está falando? A compilação da fonte não torna essa resposta incorreta ou desatualizada. é apenas um método diferente. Você pode usar o apt para automatizar o processo para você, se necessário. - jargonjunkie
vc usa o que vc precisar. Eu realmente não vejo como isso apóia sua afirmação de que esta sendo desatualizado. como você mesmo disse, use-o quando precisar, porque pode não estar disponível. Por exemplo, o windows subsystem for linux usa alguns pacotes de software datados, embora a distro seja Ubuntu 16.04.1 (beta) e usa python2.6.2, e python3 mesmo que o atual seja python2.7.12. Nesse caso, eu deveria compilar se eu quiser pacotes atualizados - jargonjunkie
@jargonjunkie você está fora do tópico, mas está correto. Se a questão é "como instalo o python 2.7 no Ubuntu 16.04+" que é (desde 16.04 está agora disponível, qual é o meu ponto), então você simplesmente sudo apt-get install python2.7. Isso não é apenas mais fácil, é a única resposta correta, já que é a única maneira de você poder manipular os módulos python via apt-get e suas dependências. - michael
espero que isso ajude a ilustrar (resposta adicional). o ecossistema python é muito particular / minguado, e você pode facilmente entrar em "inferno de dependência" se você não construir cuidadosamente seu ambiente python askubuntu.com/a/831075/17060 - michael


Respostas:


Primeiro, instale algumas dependências:

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

Em seguida, baixe usando o seguinte comando:

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

Extraia e vá para o diretório:

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

Agora, instale usando o comando que você acabou de tentar, usando checkinstall em vez disso, para facilitar a desinstalação, se necessário:

./configure
make
sudo checkinstall

mudança version para qualquer versão que você preciseversion=2.7.1 ou version=3.6.0, por exemplo).


184
2018-02-05 12:20



Usar sudo make install e não altinstall configurá-lo como versão padrão do python - Shagun Sodhani
usar CXX=g++ ./configure if ./configure emite um aviso dizendo que g ++ não foi encontrado - srj
Depois de instalar como instruído acima, quais comandos eu executo no console para verificar se de fato ele está instalado? - Ciwan
É extraordinário que a melhor resposta para a simples pergunta "como instalar o Python" tenha um aviso tão terrível, é como "esta é a melhor maneira que conhecemos de instalar o Python e pode muito bem quebrar o seu sistema" ... É também É muito surpreendente que o site oficial do Python tenha muitos downloads e não uma única página de instruções de instalação. - patb
pat - a melhor resposta para a pergunta simples "como instalar o python" é sudo apt-get install python, a resposta mais complicada é "como instalar o Mais recentes python ", a implicação sendo" da fonte ". Você terá o mesmo problema em qualquer sistema operacional, a menos que esteja instalando binários pré-compilados de terceiros, que, novamente, é arriscado em qualquer sistema operacional (e varia muito em sistemas operacionais diferentes) Também esta resposta é de 2012, para mais conselhos recentes, veja askubuntu.com/questions/101591/… - michael


A menos que você realmente tenha um desejo ardente de compilá-lo, a maneira preferida é usar o DeadSnakes PPA para instalar versões do Python que não estão incluídas por padrão:

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

Outras versões, como python2.4 ou python3.6, etc. também estão disponíveis.


159
2018-02-05 14:40



Nota do programa: Se você estiver no 10.04, talvez seja necessário instalar o python-software-properties antes de usar o add-apt-repository. - Craig Maloney
É recomendável construir python em seu ambiente local, em vez de instalá-lo a partir de binários de pré-compilação - pylover
+1 :) really have a burning desire to compile it yourself - Watt
Faltou mencionar que: 1. o ppa não é oficialmente endossado, então a maneira mais segura é construir a partir da fonte. 2. isso resultará em um python global, que nãosudoOs usuários não podem modificar ou instalar pacotes para, não um local. 3. Múltiplos pitons podem ser instalados localmente em diferentes locais, construindo a partir da fonte. - Ioannis Filippidis
apt-get install python2.7Isso instala o binário python2.7 em vez de python ... feio !! - Dhawal


Continuando a documentar isso para os últimos lançamentos do Ubuntu1 : para o servidor Ubuntu 16.04.1, o Python padrão é a versão 3.5 e o Python 2.7 é não instalado por padrão. Em uma nova instalação (note que não há nem mesmo um python executável):

$ 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>

Nota: antes de continuar, você provavelmente vai querer fazer uma rápida sudo apt-get update, sudo apt-get upgradee sudo apt-get dist-upgrade (Por favor, note exatamente o que esses comandos estão fazendo; estou assumindo uma nova instalação aqui.)

Instalar o python 2.7 é tão fácil quanto:

$ sudo apt-get install python2.7

A saída inicial da instalação do python 2.7 é a seguinte:

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

Depois de instalar o 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

Mas ainda há um problema, já que você ainda não pode instalar módulos PyPI via pip - por exemplo, se você quiser o bloco de anotações jupyter ou o último chip ou numpy (etc), convém instalar pip e depois pip install aqueles, e ainda voltando para apt-get para instalar qualquer necessário sistema dependências, como graphviz ou bibliotecas do sistema principal.

$ 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

Então, para instalar o pip, mais uma vez, é tão fácil quanto 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

Você precisará de ambos python-pip para o Python 2.7 pip e a python3-pip para o Python 3 pip. A instalação via apt-get é certo instalar as dependências necessárias; por exemplo, aqui está a saída para instalar o 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...

Uma coisa interessante acontece como resultado disso: agora você tem o "padrão" (e o PEP recomendado) python2 e python3 (que são apenas links simbólicos para o python 2.7 e 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

Você também vai querer sudo apt-get install python3-pip; antes de instalar, você tem:

$ 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

Depois de instalar 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...

As versões resultantes:

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

E uma última coisa antes que você possa ir e começar a instalar todos os seus módulos PyPI python favoritos: você provavelmente terá que atualizar o próprio pip (tanto pip2 quanto pip3, separadamente; também, não importa se pip é invocado através do python executáveis ​​ou o pip executáveis, os upgrades reais são armazenados em /usr/lib):

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

Agora você pode executar o stand-alone pip ou a versão empacotada dentro python (através da python -m pip {command}).


[1] Resumo histórico: o Ubuntu mais antigo tinha apenas o Python 2.6, portanto, todos os vários métodos para instalar o Python 2.7+. Mais tarde, depois que o Python 2.7 foi adicionado aos repositórios públicos, ainda tivemos o mesmo desafio de instalar o mais novo Python 2.7 com as últimas correções, o que era (muito) frequentemente necessário. A situação hoje é muito melhor / mais simples: o atual Python 2.7 e 3.5 (basicamente as duas versões da plataforma Python que as pessoas se importam) que estão agora nos repositórios públicos são muito estáveis, então agora só precisamos nos preocupar em instalar o mais recente python módulosnão o mais recente python. Então agora o "último problema de versão" do Python mudou parcialmente fora dos repositórios do SO apt e em PyPI & pip.)


24
2017-09-29 08:50



Seguindo estas instruções no Ubuntu 16.04.1 LTS, configure com sucesso o python 2.7 e o pip desta forma: sudo apt-get install python2.7; sudo apt-get instala o python-pip; sudo -H python2 -m pip install --upgrade pip; # Versão de verificação: $ pip --version -> pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12 - Robert Lujo
Resposta realmente útil - muito obrigado! - Failed Scientist
Perdoe minha ignorância, mas posso saber o que significa "hash" ao mostrar as versões do Python? - Failed Scientist
@TalhaIrfan É uma boa pergunta (e, se você permitir uma resposta simplificada): quando um comando é digitado no bash (como w / most shells), o cmd pode ser um alias, uma função ou um arquivo executável encontrado no arquivo. $PATH. O env var PATH é uma longa lista de diretórios com literalmente milhares de arquivos. Para acelerar a localização do executável, o shell usa uma hashtable em cache para pesquisa rápida. Poderia se tornar obsoleto, então "hashed" permite que você saiba que é "lembrado" este comando mapeado para esse arquivo executável unix.stackexchange.com/questions/5609/… - michael
@gaia você pode querer fazer uma pergunta separada, uma vez que mais e mais podem ser necessários para descobrir (ou se alguma coisa mudou desde que eu escrevi isso). Talvez, primeiro verifique que ambos  pip (2.7) & pip3 (3.x) foram completamente instalados / atualizados, e não apenas os primeiros - ou seja, sudo apt-get install python-pip python3-pip e sudo -H python2 -m pip install --upgrade pip e sudo -H python3 -m pip install --upgrade pip  ... Ou se realmente for um problema de permissão (indicado por "funciona com o sudo"), então será um pouco mais difícil rastrear. - michael


12,04

Se você está seguindo Achu's answerentão o termo libread5-dev deve ser alterado para libreadline-gplv2-dev. Então o comando completo seria:

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





Você também pode baixar e instalar via 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



Esta é a maneira mais limpa de obter uma versão realmente atualizada do Python em uma versão mais antiga do Ubuntu. Inclui também suporte virtualenv, através do pyenv-virtualenv plug-in, facilitando a instalação de aplicativos com diferentes requisitos de módulo, sem conflitos. - RichVel
Dois avisos sobre o pyenv: (1) ele só funciona a partir de um shell bash (ou talvez zsh, mas certamente não traço que é / bin / sh no Ubuntu), e (2) requer um shell de login (por ex. bash --login), o que nem sempre é fácil de alcançar, e. de Ansible. Melhor para uso interativo, menos bom para servidores de script. - RichVel