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ápidosudo apt-get update
, sudo apt-get upgrade
e sudo apt-get dist-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 pip
- por exemplo, se você quer um notebook jupyter ou o mais recente ou numpy (etc), você vai querer instalar pip
e, em seguida, pip install
, e ainda recorrendo a apt-get
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 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 os python-pip
para o Python 2.7 pip
e o python3-pip
para o Python 3 pip
. A instalação via apt-get
é 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) 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 desejará 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 o 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 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 pip
é chamado pelos executáveis python
ou pelos executáveis pip
, 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 pip
autônomo ou a versão agrupada em python
(via python -m pip {command}
).
[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 & 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 & apt
e em PyPI & pip
.)