Quiero instalar el último tarball de Python en Ubuntu, descargado de http://python.org/download/ .
¿Es esta una forma correcta de instalar?
./configure
make
make install
Si no, ¿cómo hago eso?
fuente
Quiero instalar el último tarball de Python en Ubuntu, descargado de http://python.org/download/ .
¿Es esta una forma correcta de instalar?
./configure
make
make install
Si no, ¿cómo hago eso?
Primero, instale algunas dependencias:
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
Luego descargue usando el siguiente comando:
version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz
Extrae y ve al directorio:
tar -xvf Python-$version.tgz
cd Python-$version
Ahora, instale usando el comando que acaba de probar, en su checkinstall
lugar, para facilitar la desinstalación si es necesario:
./configure
make
sudo checkinstall
Cambie version
a la versión que necesite ( version=2.7.1
o version=3.6.0
, por ejemplo).
sudo make install
y no altinstall
configurarlo como versión predeterminada de Python
CXX=g++ ./configure
si ./configure emite una advertencia diciendo que no se encontró g ++
sudo apt-get install python
, la respuesta más complicada es "cómo instalar la última Python", lo que implica "desde la fuente". Tendrá el mismo problema en cualquier sistema operativo a menos que esté instalando archivos binarios precompilados de un tercero, lo que, de nuevo, es arriesgado en cualquier sistema operativo (y varía mucho según el sistema operativo). También esta respuesta es de 2012; para obtener consejos más recientes, consulte askubuntu.com/questions/101591/…
A menos que realmente tenga un deseo ardiente de compilarlo usted mismo, la forma preferida es utilizar el PPA DeadSnakes para instalar versiones de Python que no están incluidas de manera predeterminada:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7
Otras versiones, como python2.4
o python3.6
, etc. también están disponibles.
really have a burning desire to compile it yourself
ppa
no está respaldado oficialmente, por lo que la forma más segura es construir desde la fuente. 2. Esto resultará en un pitón global, que los que no sudo
pueden modificar o instalar paquetes, no uno local. 3. Se pueden instalar varias pitones localmente en diferentes ubicaciones construyendo desde la fuente.
apt-get install python2.7
Esto instala el binario python2.7 en lugar de python ... ¡feo!
Continuando documentando esto para las últimas versiones 1 de Ubuntu: para el servidor Ubuntu 16.04.1, el Python predeterminado es la versión 3.5, y Python 2.7 no está instalado por defecto. En una instalación nueva (tenga en cuenta que ni siquiera hay un python
ejecutable):
$ 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, es probable que desee hacer un rápido sudo apt-get update
, sudo apt-get upgrade
y sudo apt-get dist-upgrade
(tenga en cuenta exactamente lo que están haciendo estos comandos; estoy asumiendo una instalación nueva aquí).
Instalar python 2.7 es tan fácil como:
$ sudo apt-get install python2.7
El resultado inicial de instalar Python 2.7 es el siguiente:
$ 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...
Después de instalar 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
Pero todavía hay un problema, ya que aún no puede instalar módulos PyPI a través de pip
, por ejemplo, si desea un jupyter notebook, o el último scipy o numpy (etc.), querrá instalarlos pip
y luego pip install
esos, y aún recurrir a apt-get
para instalar las dependencias del sistema necesarias , como graphviz o las bibliotecas del sistema central.
$ 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
Entonces, para instalar pip, nuevamente, es tan fácil como 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
Necesitará tanto python-pip
para Python 2.7 pip
como python3-pip
para Python 3 pip
. La instalación a través de apt-get
está segura de instalar las dependencias necesarias; Por ejemplo, aquí está la salida para instalar 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...
Como resultado de esto, sucede algo interesante: ahora tiene el "estándar" (y se recomienda PEP) python2
y python3
(que son solo enlaces simbólicos a python 2.7 y 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
También querrás sudo apt-get install python3-pip
; Antes de instalar, tiene:
$ 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
Después de la instalación 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...
Las versiones 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)
Y una última cosa antes de que pueda comenzar a instalar todos sus módulos PyPI Python favoritos: probablemente tendrá que actualizar pip en sí (tanto pip2 como pip3, por separado; además, no importa si pip
se invoca a través de los python
ejecutables o el pip
ejecutables, las actualizaciones reales se almacenan en /usr/lib
):
$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...
Ahora puede ejecutar pip
la versión independiente o la versión incluida en python
(via python -m pip {command}
).
[1] Resumen histórico: Ubuntu anterior solo tenía Python 2.6, por lo tanto, todos los diversos métodos para instalar Python 2.7+. Más tarde, después de agregar Python 2.7 a los repositorios públicos, todavía teníamos el mismo desafío para instalar el Python 2.7 más nuevo con las últimas correcciones, que era (demasiado) frecuentemente necesario. La situación actual es mucho mejor / más simple: las Python 2.7 y 3.5 actuales (básicamente las dos únicas versiones de la plataforma Python que le interesan a las personas) que ahora están en repositorios públicos son muy estables, por lo que ahora solo tenemos que preocuparnos por instalar la última versión módulos de Python , no el último Python . Así que ahora el "problema de la última versión" de Python se ha movido parcialmente fuera de los repositorios del sistema operativo apt
y hacia PyPI & pip
).
$PATH
. El env var PATH
es una larga lista de directorios con literalmente miles de archivos. Para acelerar la búsqueda del ejecutable, el shell utiliza una tabla hash en caché para una búsqueda rápida. Podría volverse obsoleto, por lo que "hash" le permite saber que está "recordado" este comando asignado a ese archivo ejecutable unix.stackexchange.com/questions/5609/…
pip
(2.7) y pip3
(3.x) fueron completamente instalado / actualizado, y no sólo el ex - es decir, sudo apt-get install python-pip python3-pip
y sudo -H python2 -m pip install --upgrade pip
, y sudo -H python3 -m pip install --upgrade pip
... O si realmente es un problema de permisos (indicado por "funciona con sudo "), entonces será un poco más difícil de localizar.
12.04
Si está siguiendo la respuesta de Achu , entonces el término libread5-dev
debe cambiarse a libreadline-gplv2-dev
. Entonces el comando completo sería:
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
También puede descargarlo e instalarlo a través de 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
pyenv-virtualenv
complemento, lo que facilita la instalación de aplicaciones con diferentes requisitos de módulo sin conflictos.
bash --login
), que no es siempre fácil de lograr, por ejemplo, de Ansible. Mejor para uso interactivo, menos bueno para servidores de secuencias de comandos.
Principalmente un espejo de esta respuesta con una introducción ajustada
Yo recomendaría pyenv . Automatiza el proceso de compilación además de instalar las dependencias de encabezado (ver más abajo). Puede compilar e instalar una versión nueva (o antigua) de Python simplemente diciendo pyenv install 3.6.0
. Todo funciona como su usuario, por lo que no tiene que preocuparse por estropear el Python utilizado por Ubuntu.
A diferencia de algunas de las opciones basadas en apt-repo (por ejemplo, deadsnakes), generalmente funcionará el mismo día de un lanzamiento después de un pyenv update
porque no es necesario esperar a que alguien más lo empaquete. Vea todas las versiones que puede instalar conpyenv install --list
Instale las herramientas y los encabezados necesarios para construir CPythons (las pitones exóticas como PyPy o Jython pueden tener otras dependencias). Pyenv usa Git, además de que también permite compilaciones / instalaciones de ramas de origen, por lo que puede instalar lo que sea 3.8 en este momento, es decir, la rama maestra de CPython recién salido de 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
Ejecute el script de instalación (instala pyenv y algunos complementos pyenv muy útiles del autor original; consulte aquí para obtener más información)
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
Agregue líneas de inicio a su ~/.profile
o ~/.bashrc
(lo menciona al final del script de instalación):
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
Reinicie su shell (cerrar y abrir o exec $SHELL
) o vuelva a cargar el script de perfil. (con p source ~/.bashrc
. ej. )
¡Hecho!
Para no tocar el sistema Python (generalmente es una mala idea; los servicios a nivel del sistema operativo pueden depender de algunas versiones específicas de la biblioteca, etc.) hacen su propio entorno, ¡es fácil! Aún mejor, no sudo
, para ello o pip
instala!
Instale su versión preferida de Python (esto descargará la fuente y la compilará para su usuario, no se requiere entrada)
pyenv install 3.6.0
Conviértalo en un virtualenv para que pueda hacer otros más tarde si lo desea
pyenv virtualenv 3.6.0 general
Hazlo globalmente activo (para tu usuario)
pyenv global general
Haz lo que quieras con Python / pip, etc. Es tuyo.
Si desea limpiar sus bibliotecas más tarde, puede eliminar virtualenv ( pyenv uninstall general
) o crear una nueva ( pyenv virtualenv 3.6.0 other_proj
). También puede tener entornos activos por directorio: pyenv local other_proj
colocará un .python-version
archivo en su carpeta actual y cada vez que invoque Python o las utilidades de Python instaladas por pip desde él o debajo de él, pyenv los calzará.
bash: pyenv: command not found
, fish: Unknown command 'pyenv'
$PATH
, debe haber una entrada que termine en algo así .pyenv/bin
. Si falta, asegúrese de seguir # 3 Y # 4 (reinicie su shell) en Instalar pyenv arriba.pyenv: no such command 'virtualenv'
pyenv commands
.
sudo apt-get install python-2.7 python-pip
sudo apt-get install python2.7
. Esto no solo es más fácil, es la única respuesta correcta, ya que es la única forma en que podrá manejar la instalación de módulos de Python a través de apt-get y sus dependencias a su vez.