UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

210 lines (124 loc) 10.9 kB
Related articles * [Python Package Guidelines](/index.php/Python_Package_Guidelines "Python Package Guidelines") * [Python VirtualEnv](/index.php/Python_VirtualEnv "Python VirtualEnv") * [mod_wsgi](/index.php/Mod_wsgi "Mod wsgi") De la [Wikipedia](https://es.wikipedia.org/wiki/Python): *Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.* *Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.* ## Contents * [1 Instalación](#Instalaci.C3.B3n) * [1.1 Python 3](#Python_3) * [1.1.1 VirtualEnv](#VirtualEnv) * [1.2 Python 2](#Python_2) * [2 Tratar los problemas de versión en los *scripts* de compilación](#Tratar_los_problemas_de_versi.C3.B3n_en_los_scripts_de_compilaci.C3.B3n) * [3 Completado de sintaxis en el shell de Python](#Completado_de_sintaxis_en_el_shell_de_Python) * [4 *Widget bindings*](#Widget_bindings) * [5 Versiones antiguas](#Versiones_antiguas) * [6 Sugerencias y trucos](#Sugerencias_y_trucos) ## Instalación [Instala](/index.php/Help:Reading_(Espa%C3%B1ol)#Instalaci.C3.B3n_de_paquetes "Help:Reading (Español)") los paquetes [python](https://www.archlinux.org/packages/?name=python) y/o [python2](https://www.archlinux.org/packages/?name=python2) disponibles en los [repositorios oficiales](/index.php/Official_repositories_(Espa%C3%B1ol) "Official repositories (Español)"). ### Python 3 Python 3 es la última versión del lenguaje, y es incompatibles con Python 2\. El lenguaje es esencialmente el mismo, pero muchos detalles han cambiado considerablemente, en especial el funcionamiento de los objetos integrados como los diccionarios o las cadenas, y muchas características obsoletas han sido finalmente eliminadas. Además, la biblioteca estándar se ha reorganizado en algunas partes importantes. Para ver un resumen de las diferencias, visita [Python2orPython3](http://wiki.python.org/moin/Python2orPython3) y concretamente el [chapter](http://getpython3.com/diveintopython3/porting-code-to-python-3-with-2to3.html) relacionado de "Dive into Python 3". Para instalar la última versión de Python 3, [instala](/index.php/Help:Reading_(Espa%C3%B1ol)#Instalaci.C3.B3n_de_paquetes "Help:Reading (Español)") el paquete [python](https://www.archlinux.org/packages/?name=python) desde los [repositorios oficiales](/index.php/Official_repositories_(Espa%C3%B1ol) "Official repositories (Español)"). Si quisieras compilar el código de las últimas RC/betas, visita [Python Downloads](http://www.python.org/download/). El [AUR](/index.php/AUR_(Espa%C3%B1ol) "AUR (Español)") también contiene [PKGBUILDs](/index.php/PKGBUILD "PKGBUILD") adecuados. Si decides compilar la RC, ten en cuenta que el binario (por defecto) se instala en `/usr/local/bin/python3.x`. #### VirtualEnv Comenzar un proyecto dentro de un entorno [virtualenv](/index.php/Virtualenv "Virtualenv") es tan simple como ejecutar: ``` $ python -m venv proyecto $ source proyecto/bin/activate (proyecto)$ pip install <dependency> ``` ### Python 2 Para instalar la última versión de Python 2, [instala](/index.php/Help:Reading_(Espa%C3%B1ol)#Instalaci.C3.B3n_de_paquetes "Help:Reading (Español)") el paquete [python2](https://www.archlinux.org/packages/?name=python2) desde los [repositorios oficiales](/index.php/Official_repositories_(Espa%C3%B1ol) "Official repositories (Español)"). Python 2 puede convivir sin problemas con Python 3\. Necesitas ejecutar `python2` para utilizar esta versión. Cualquier programa que necesite Python 2 tiene que apuntar a `/usr/bin/python2`, en lugar de a `/usr/bin/python`, que apunta a Python 3. Para hacer esto, abre el programa en un editor de texto y cambia la primera línea. La línea mostrará una de las siguientes posibilidades: ``` #!/usr/bin/env python ``` o ``` #!/usr/bin/python ``` En ambos casos, simplemente cambia `python` por `python2` y el programa usará Python 2 en lugar de Python 3. Otra forma de forzar el uso de python2 sin alterar los *scripts* es llamarlo explícitamente, por ejemplo: `python2 miScript.py` Para terminar, es posible que no puedas controlar la ejecución de los *scripts*, pero hay una forma de trucar el entorno. Solo funciona si los *scripts* usan `#!/usr/bin/env python`, y no funcionará con `#!/usr/bin/python`. Este sistema depende de que `env` busque la entrada correcta en la variable PATH. Primero, crea un directorio de trabajo: ``` $ mkdir ~/bin ``` Después, añade enlaces simbólicos a python2 y a sus *scripts* de configuración: ``` $ ln -s /usr/bin/python2 ~/bin/python $ ln -s /usr/bin/python2-config ~/bin/python-config ``` Para terminar, añade el nuevo directorio *al principio* de tu variable PATH: ``` $ export PATH=~/bin:$PATH ``` Ten en cuenta que este cambio no es permanente, sino que está activo solo en la sesión actual. Para comprobar qué intérprete de python está siendo usado por `env`, usa la siguiente orden: ``` $ which python ``` Una solución similar para cambiar el entorno, que también depende de que el *script* en cuestión ejecute `#!/usr/bin/env python` es usar un entorno virtual [Virtualenv](/index.php/Virtualenv "Virtualenv"). Cuando se activa un Virtualenv, el ejecutable de Python al que se apunta desde `$PATH` será el que se ha instalado con el Virtualenv. Así, si el Virtualenv se instaló con Python 2, `python` ejecutará Python 2\. Para hacer esto, [instala](/index.php/Help:Reading_(Espa%C3%B1ol)#Instalaci.C3.B3n_de_paquetes "Help:Reading (Español)") [python2-virtualenv](https://www.archlinux.org/packages/?name=python2-virtualenv). Después crea el Virtualenv. ``` $ virtualenv2 venv # Crea un directorio, venv/, que contiene el Virtualenv ``` Activa el Virtualenv, lo que actualizará `$PATH` para que apunte a Python 2\. Ten en cuenta que esta activación solo estará en vigor en la sesión actual. ``` $ source venv/bin/activate ``` A partir de este momento, el *script* debería ejecutarse usando Python 2. ## Tratar los problemas de versión en los *scripts* de compilación Muchos *scripts* de compilación de proyectos dan por hecho que `python` será Python 2, y esto podría provocar un error (normalmente indicando que `print 'foo'` es una sintaxis inválida. Afortunadamente, muchos de ellos llaman al `python` del `$PATH` en lugar de llamar a `#!/usr/bin/python` en la primera línea, y los *scripts* de Python suelen estar incluídos en el árbol del proyecto. Así que en lugar de modificar los *scripts* a mano, hay una solución fácil. Simplemente crea `/usr/local/bin/python` con el siguiente contenido: `/usr/local/bin/python` ``` #!/bin/bash script=$(readlink -f -- "$1") case "$script" in (/ruta/del/proyecto1/*|/ruta/del/proyecto2/*|/ruta/del/proyecto3*) exec python2 "$@" ;; esac exec python3 "$@" ``` Donde `/ruta/del/proyecto1/*|/ruta/del/proyecto2/*|/ruta/del/proyecto3*` es una lista de patrones separados por `|` y que coincide con todos los árboles de proyectos. No olvides hacerlo ejecutable.: ``` # chmod +x /usr/local/bin/python ``` Después de esto, los *scripts* en los árboles de proyecto especificados se ejecutarán con Python 2. ## Completado de sintaxis en el shell de Python Copia esto en la consola interactiva de Python: `/usr/bin/python` ``` import rlcompleter import readline readline.parse_and_bind("tab: complete") ``` [Fuente](http://algorithmicallyrandom.blogspot.com.es/2009/09/tab-completion-in-python-shell-how-to.html) ## *Widget bindings* Los siguientes *[widget toolkit](https://en.wikipedia.org/wiki/widget_toolkit "wikipedia:widget toolkit") bindings* están disponibles: * **TkInter** — Bindings Tk [http://wiki.python.org/moin/TkInter](http://wiki.python.org/moin/TkInter) || módulo estándar * **pyQt** — Bindings [Qt](/index.php/Qt "Qt") [http://www.riverbankcomputing.co.uk/software/pyqt/intro](http://www.riverbankcomputing.co.uk/software/pyqt/intro) || [python2-pyqt4](https://www.archlinux.org/packages/?name=python2-pyqt4) [python2-pyqt5](https://www.archlinux.org/packages/?name=python2-pyqt5) [python-pyqt4](https://www.archlinux.org/packages/?name=python-pyqt4) [python-pyqt5](https://www.archlinux.org/packages/?name=python-pyqt5) * **pySide** — Bindings [Qt](/index.php/Qt "Qt") [http://www.pyside.org/](http://www.pyside.org/) || [python2-pyside](https://www.archlinux.org/packages/?name=python2-pyside) [python-pyside](https://www.archlinux.org/packages/?name=python-pyside) * **pyGTK** — Bindings [GTK+ 2](/index.php/GTK%2B "GTK+") [http://www.pygtk.org/](http://www.pygtk.org/) || [pygtk](https://www.archlinux.org/packages/?name=pygtk) * **PyGObject** — Bindings [GTK+ 2/3](/index.php/GTK%2B "GTK+") mediante introspección de GObject [https://wiki.gnome.org/PyGObject/](https://wiki.gnome.org/PyGObject/) || [python2-gobject2](https://www.archlinux.org/packages/?name=python2-gobject2) [python2-gobject](https://www.archlinux.org/packages/?name=python2-gobject) [python-gobject2](https://www.archlinux.org/packages/?name=python-gobject2) [python-gobject](https://www.archlinux.org/packages/?name=python-gobject) * **wxPython** — Bindings wxWidgets [http://wxpython.org/](http://wxpython.org/) || [wxpython](https://www.archlinux.org/packages/?name=wxpython) Para usar estos con Python, puedes necesitar instalar los *kits* de *widgets* asociados. ## Versiones antiguas Las versiones antiguas de Python están disponibles en el [AUR](/index.php/AUR_(Espa%C3%B1ol) "AUR (Español)") y pueden ser útiles como curiosidad histórica, para ejecutar aplicaciones viejas que no funcionen con las versiones actuales, o para probar programas en Python que se deban ejecutar en distribuciones que incluyan versiones antiguas de Python (p. ej. RHEL 5.x tiene Python 2.4, y Ubuntu 12.04 tiene Python 3.1): * [python15](https://aur.archlinux.org/packages/python15/) * [python25](https://aur.archlinux.org/packages/python25/) * [python26](https://aur.archlinux.org/packages/python26/) Desde Julio de 2014, Python oficialmente solo soporta Python 2.7, 3.2, 3.3 y 3.4 para correcciones de seguridad. El uso de versiones más antiguas para aplicaciones expuestas a Internet o para código inseguro puede ser peligroso y no se recomienda. Se pueden encontrar en el AUR módulos o bibliotecas adicionales para Python buscando python (versión sin punto), por ejemplo, buscando "python26" para módulos de la versión 2.6. ## Sugerencias y trucos [IPython](http://ipython.org/) es una línea de órdenes mejorada disponible en los repositorios oficiales como [ipython](https://www.archlinux.org/packages/?name=ipython) y [ipython2](https://www.archlinux.org/packages/?name=ipython2).