Python 2.7 en Ubuntu
python-2.7 (7)
Bueno, si lo único que necesitas es argparse (¡viste eso en uno de tus comentarios!), Simplemente podrías:
pip install argparse
Esta no es exactamente una respuesta a la pregunta exacta :-), pero de hecho si solo le faltan algunas características, muchas características 2.7 realmente provienen de proyectos independientes y / o se pueden encontrar algunos paquetes de compatibilidad, por ejemplo:
- argparse
- ¿Qué implementación de OrderedDict debería usarse en python2.6? : OrderedDict en pypi
- deberías ser capaz de reemplazar memoryview con buffer
La lista de 2.7 novedades es ciertamente más larga, pero la mayoría de las otras características nuevas probablemente no sean una gran falla, ya cambio no te metas con múltiples instalaciones de Python en tu caja. De lo contrario, vaya con pythonbrew :-)
Soy nuevo en Python y estoy trabajando en una máquina Linux (Ubuntu 10.10). Está ejecutando Python 2.6, pero me gustaría ejecutar 2.7 ya que tiene características que quiero usar. Me han instado a no instalar 2.7 y configurar eso como mi pitón predeterminado.
Mi pregunta es, ¿cómo puedo instalar 2.7 y ejecutarlo lado a lado con 2.6?
Hace poco copié Python 2.7 a Debian squeeze. Como Ubuntu 10.10 es más nuevo que Debian squeeze, si puedes hacerlo en squeeze, puedes hacerlo en Ubuntu. No tengo acceso a un sistema Ubuntu 10.10. Si configuro uno, lo probaré y actualizaré esta respuesta. Entonces, aquí hay un breve esbozo de lo que hice en Debian.
Primero, un comentario general y obvio, pero algo que se pasa por alto fácilmente. Uno no debe tomar las dependencias de construcción listadas de un paquete Debian demasiado en serio. Pueden ser mucho más específicos de lo necesario. Por ejemplo, el software como Python, que está diseñado para ser portátil y ejecutarse en una amplia gama de sistemas, es poco probable que se construya dependiendo de versiones muy específicas del software. Las dependencias de tiempo de ejecución se pueden ajustar también, pero esto debe hacerse con más precaución. Sin embargo, las dependencias de tiempo de ejecución en su mayoría se generan dinámicamente en función del software que ya está en este sistema, por lo que generalmente no es un gran problema.
apt-cache policy python2.7
python2.7:
Installed: 2.7.2-8
Candidate: 2.7.2-8
Version table:
2.7.2-12 0
50 http://debian.csail.mit.edu/debian/ unstable/main i386 Packages
2.7.2-8 0
50 http://debian.csail.mit.edu/debian/ testing/main i386 Packages
*** 2.7.2-8 0
100 /var/lib/dpkg/status
Seleccionando la versión de prueba obtenemos
apt-get source python2.7=2.7.2-8
En cuanto a debian/control
, vemos las siguientes líneas de dependencia de compilación.
Build-Depende: debhelper (> = 5), quilt, autoconf, libreadline-dev, libtinfo-dev, libncursesw5-dev (> = 5.3), tk8.5-dev, zlib1g-dev, blt-dev (> = 2.4z ), libssl-dev, libexpat1-dev, sharutils, libbz2-dev, libbluetooth-dev [linux-any], locales [! armel! avr32! hppa! ia64! mipsel], libsqlite3-dev, libffi-dev (> = 3.0 .5), mime-support, libgpm2 [linux-any], netbase, lsb-release, bzip2, libdb4.8-dev, gdb, python, help2man Build-Depends-Indep: python-sphinx Build-Conflicts: tcl8.3 -dev, tk8.3-dev, tcl8.4-dev, tk8.4-dev, python2.7-xml, python-xml, autoconf2.13, libncurses5-dev
La mayoría de esto se satisface fácilmente con squeeze. Con la útil utilidad apt-show-versions
obtenemos en mi máquina
apt-show-versions debhelper quilt autoconf libreadline-dev libtinfo-dev libncursesw5-dev tk8.5-dev zlib1g-dev blt-dev /
libssl-dev libexpat1-dev sharutils libbz2-dev libbluetooth-dev locales libsqlite3-dev /
libffi-dev mime-support libgpm2 netbase lsb-release bzip2 libdb4.8-dev gdb python help2man python-sphinx
autoconf/squeeze uptodate 2.67-2
blt-dev/squeeze uptodate 2.4z-4.2
bzip2/squeeze uptodate 1.0.5-6
debhelper/squeeze-backports uptodate 8.9.13~bpo60+1
gdb/squeeze uptodate 7.0.1-2+b1
help2man/squeeze uptodate 1.38.2
libbluetooth-dev/squeeze uptodate 4.66-3
libbz2-dev/squeeze uptodate 1.0.5-6
libdb4.8-dev/squeeze uptodate 4.8.30-2
libexpat1-dev/squeeze uptodate 2.0.1-7
libffi-dev/squeeze uptodate 3.0.9-3
libgpm2/squeeze uptodate 1.20.4-3.3
libncursesw5-dev/squeeze uptodate 5.7+20100313-5
libreadline-dev/squeeze uptodate 6.1-3
libsqlite3-dev/squeeze uptodate 3.7.3-1
libssl-dev/squeeze uptodate 0.9.8o-4squeeze5
libtinfo-dev not installed
locales/squeeze uptodate 2.11.2-10
lsb-release/squeeze uptodate 3.2-23.2squeeze1
mime-support/squeeze uptodate 3.48-1
netbase/squeeze uptodate 4.45
python/squeeze uptodate 2.6.6-3+squeeze6
python-sphinx/squeeze-backports uptodate 1.0.8+dfsg-2~bpo60+1
quilt/squeeze uptodate 0.48-7
sharutils/squeeze uptodate 1:4.9-1
tk8.5-dev/squeeze uptodate 8.5.8-1
zlib1g-dev/squeeze uptodate 1:1.2.3.4.dfsg-3
Vemos que todo excepto libtinfo-dev
está disponible en squeeze. Tengo las versiones de squeeze backport de debhelper
y python-sphinx
, pero ambas están también disponibles para Debian squeeze en versiones que satisfacen los requisitos de compilación.
Observe también que tengo libncurses5-dev instalado
apt-show-versions libncurses5-dev
libncurses5-dev/squeeze uptodate 5.7+20100313-5
Ambos paquetes corresponden a las curses 5.7+20100313-5
paquete fuente curses 5.7+20100313-5
. Observe que libtinfo-dev
de hecho reemplaza a libncurses5-dev
.
apt-cache show libtinfo-dev
Package: libtinfo-dev
Source: ncurses
Version: 5.9-4
Installed-Size: 279
Maintainer: Craig Small <[email protected]>
Architecture: i386
Replaces: libncurses5-dev (<< 5.9-3)
Depends: libtinfo5 (= 5.9-4)
Uno no esperaría que Python 2.7 se desarrollara en una versión específica de maldiciones, y de hecho no es así. Sin embargo, si intentas construir los paquetes sin satisfacer la dependencia que obtienes
debuild -uc -us
dpkg-checkbuilddeps: Unmet build dependencies: libtinfo-dev
dpkg-checkbuilddeps: Build conflicts: libncurses5-dev
debuild: fatal error at line 1289:
You do not appear to have all build dependencies properly met.
You can use mk-build-deps to generate a dummy package which
Depends on all the required packages, or you can install them
manually using dpkg or apt using the error messages just above
this message.
Por lo tanto, es necesario editar debian/control
. Tenga en cuenta que también necesita editar de manera similar el archivo debian/control.in
, de lo contrario, el archivo de control
se regenerará de forma incorrecta desde control.in
. Lo más simple es simplemente eliminar libncurses5-dev
de la línea Build-Conflicts
y libtinfo-dev
de la línea Build-Depends
, y luego ejecutar debuild -uc -us
nuevamente. Si vas a tener este paquete instalado junto con los paquetes estándar predeterminados de Python 2.6 en Debian squeeze, también debes eliminar las dos líneas
Conflicts: python-profiler (<= 2.7.1-2)
Replaces: python-profiler (<= 2.7.1-2)
Esas líneas están ahí porque 2.7 incluye la funcionalidad python-profiler
. Si 2.7 es el pitón predeterminado, entonces python-profiler
ya no es necesario. Sin embargo, si uno está instalando 2.7 como un Python no predeterminado, ese razonamiento no se aplica, y python-profiler
aún lo necesita 2.6.
Esto debería compilarse correctamente y dar como resultado la siguiente lista de paquetes binarios.
ls -lah *.deb
-rw-r--r-- 1 faheem staff 289K Jan 12 02:33 idle-python2.7_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.1M Jan 12 02:34 libpython2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 2.5M Jan 12 02:34 python2.7_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 12M Jan 12 02:34 python2.7-dbg_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 4.9M Jan 12 02:34 python2.7-dev_2.7.2-8_i386.deb
-rw-r--r-- 1 faheem staff 6.0M Jan 12 02:33 python2.7-doc_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 692K Jan 12 02:33 python2.7-examples_2.7.2-8_all.deb
-rw-r--r-- 1 faheem staff 1.7M Jan 12 02:34 python2.7-minimal_2.7.2-8_i386.deb
Finalmente, uno puede instalar los paquetes binarios con
dpkg -i python2.7-minimal_2.7.2-8_i386.deb python2.7_2.7.2-8_i386.deb python2.7-dev_2.7.2-8_i386.deb libpython2.7_2.7.2-8_i386.deb
A veces, dpkg
puede ser un poco difícil para satisfacer las dependencias cuando están todas instaladas a la vez, por lo que es posible que tengas que ejecutar apt-get -f install
luego si obtienes errores de dependencia o, alternativamente, instala los paquetes en grupos más pequeños.
Lo hice con pythonbrew en mi máquina Ubuntu 10.10.
$ python -V
Python 2.6.6
$ curl -kL https://raw.github.com/utahta/pythonbrew/master/pythonbrew-install | bash
$ . $HOME/.pythonbrew/etc/bashrc
$ pythonbrew install 2.7.1
$ pythonbrew switch 2.7.1
Switched to Python-2.7.1
$ python -V
Python 2.7.1
Otra opción es instalar ActivePython si no quiere compilar cosas usted mismo. Incluye un administrador de paquetes binarios también.
Puede usar virtualenv para crear entornos de Python distintos. Simplemente siendo informativo, pero ¿qué tiene Python 2.7 que necesita?
Simplemente descargue Python 2.7 de http://www.python.org/download/releases/2.7.1/ y compárelo.
ubuntu 12.04
Instalar dependencias:
$ sudo apt-get install python-software-properties
Agregue el repositorio:
$ sudo add-apt-repository ppa:fkrull/deadsnakes
Actualiza el índice de repos:
$ sudo apt-get update
Instalar Python 3.3:
$ sudo apt-get install python3.3
ubuntu 12.04> más
Instalando las dependencias:
$ sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
Descargue y compile Python:
$ wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tar.bz2
$ tar jxf ./Python-3.3.0.tar.bz2
$ cd ./Python-3.3.0
$ ./configure --prefix=/opt/python3.3
$ make && sudo make install
Algunos toques bonitos para instalar un comando py al crear un enlace simbólico:
$ mkdir ~/bin
$ ln -s /opt/python3.3/bin/python ~/bin/py