Como instalo o mais recente Python 2.7.X ou 3.X no Ubuntu?

163

Eu quero instalar o último tarball do Python no Ubuntu, baixado do link .

Esta é uma maneira correta de instalar?

./configure
make
make install

Se não, como faço isso?

    
por mohammads 05.02.2012 / 13:02
fonte

6 respostas

186

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

Faça o download 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 para facilitar a desinstalação, se necessário:

./configure
make
sudo checkinstall

Altere version para qualquer versão que você precisar ( version=2.7.1 ou version=3.6.0 , por exemplo).

    
por Achu 05.02.2012 / 13:20
fonte
165

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.

    
por brousch 05.02.2012 / 15:40
fonte
24

Continuando a documentar isso para as versões mais recentes do Ubuntu 1 : 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 executável 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>

Nota: antes de continuar, você provavelmente desejará fazer um% rápido co_de%, sudo apt-get update e sudo apt-get upgrade (observe exatamente o que esses comandos estão de fato fazendo; estou assumindo uma nova instalação aqui. )

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

$ 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 os módulos do PyPI via sudo apt-get dist-upgrade - por exemplo, se você quer um notebook jupyter ou o mais recente ou numpy (etc), você vai querer instalar pip e, em seguida, pip , e ainda recorrendo a pip install para instalar quaisquer dependências do sistema , como as bibliotecas do sistema graphviz ou core.

$ 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, novamente, é tão fácil quanto apt-get :

$ 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 os sudo apt-get install python-pip para o Python 2.7 python-pip e o pip para o Python 3 python3-pip . A instalação via pip é certeza de 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) apt-get e python2 (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 desejará python3 ; 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 o sudo apt-get install python3-pip ,

$ 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 de você poder começar a instalar todos os seus módulos PyPI python favoritos: você provavelmente terá que atualizar o próprio pip (pip2 e pip3, separadamente; também, não importa se pip3 é chamado pelos executáveis pip ou pelos executáveis python , os upgrades reais são armazenados em pip ):

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

Agora, você pode executar o /usr/lib autônomo ou a versão agrupada em pip (via python ).

[1] Recapitulação histórica: o antigo Ubuntu 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 & amp; 3.5 (basicamente as duas únicas versões da plataforma Python com as quais 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 os últimos módulos de python, não os mais recentes < em> python . Então, agora, o "último problema de versão" do Python mudou parcialmente para fora dos repositórios de SO & amp; python -m pip {command} e em PyPI & amp; apt .)

    
por michael 29.09.2016 / 10:50
fonte
11

12.04

Se você está seguindo resposta do Achu , entã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
    
por ThatGuy 26.07.2012 / 16:37
fonte
3

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
    
por Whispered 30.03.2017 / 09:38
fonte
0

Principalmente um espelho de esta resposta com uma introdução aprimorada

Eu recomendaria pyenv . Ele automatiza o processo de construção além de instalar as dependências de cabeçalho (veja abaixo). Você pode criar e instalar uma nova (ou antiga) versão do Python, simplesmente dizendo pyenv install 3.6.0 . Tudo é executado como seu usuário, assim você não precisa se preocupar com bagunçando o Python usado pelo próprio Ubuntu.

Ao contrário de algumas das opções baseadas no apt-repo (por exemplo, deadsnakes), ele geralmente funcionará no mesmo dia de um lançamento após um pyenv update , porque você não precisa esperar que alguém o empacote. Veja todas as versões que você pode instalar com pyenv install --list

Instalar o pyenv

  1. Instale ferramentas e cabeçalhos necessários para construir CPythons (Pythons exóticos como PyPy ou Jython podem ter outras dependências). O Git é usado pelo pyenv, além de permitir construções / instalações de ramificações de código-fonte, assim você pode instalar o que quer que o 3.8 esteja neste momento, isto é, o branch master do CPython atualizado do 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. Execute o script do instalador (instala o pyenv e alguns plugins pyenv muito úteis do autor original; consulte aqui para mais)

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
    
  3. Adicione linhas de inicialização ao seu ~/.profile ou ~/.bashrc (menciona-o no final do script de instalação):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
    
  4. Reinicie seu shell (feche e abra ou exec $SHELL ) ou recarregue o script do perfil. (com, por exemplo, source ~/.bashrc )

Feito!

Configurando um ambiente

Para não tocar no sistema Python (geralmente uma má idéia; os serviços no nível do SO podem depender de algumas versões de bibliotecas específicas, etc.) crie seu próprio ambiente, é fácil! Melhor ainda, não sudo , nem pip instala!

  1. Instale sua versão preferida do Python (isso fará o download da fonte e a construirá para o usuário, sem necessidade de entrada)

    pyenv install 3.6.0
    
  2. Crie um virtualenv para que você possa fazer outras depois, se quiser

    pyenv virtualenv 3.6.0 general
    
  3. Tornar globalmente ativo (para seu usuário)

    pyenv global general
    
  4. Faça o que quiser com o Python / pip, etc. É seu.

Se você quiser limpar suas bibliotecas mais tarde, poderá excluir o virtualenv ( pyenv uninstall general ) ou criar um novo ( pyenv virtualenv 3.6.0 other_proj ). Você também pode ter ambientes ativos por diretório: pyenv local other_proj derrubará um arquivo .python-version em sua pasta atual e sempre que você chamar Python ou utilitários Python instalados por pip a partir dele ou sob ele, eles serão copiados por pyenv. / p>

Solução de problemas

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

    1. Verifique seu $PATH , deve haver uma entrada que termine em algo como .pyenv/bin . Se estiver faltando, certifique-se de ter seguido # 3 E # 4 (reinicie seu shell) em Instalar o pyenv acima.
  • pyenv: no such command 'virtualenv'

    1. Se você não usou o script do instalador, provavelmente instalou apenas o pacote root pyenv. Veja pyenv-virtualenv para instruções para adicionar o plugin
    2. Se você usou o script do instalador, verifique se ele aparece com pyenv commands .
por Nick T 15.10.2018 / 22:05
fonte