paquetes - programacion modular en python
Dado el nombre de un paquete de Python, ¿cuál es el nombre del módulo a importar? (2)
Lamentablemente, no hay método para la locura. El nombre en el índice del paquete es independiente del nombre del módulo que import
. Desastrosamente algunos paquetes comparten nombres de módulos . Si instala ambos, su aplicación se romperá con probabilidades pares. ( Ruby tiene este problema también )
Embalaje en Python es generalmente grave. La causa principal es que el idioma se envía sin un administrador de paquetes. Ruby y Nodejs se envían con los gestores de paquetes Gem y Npm, y han creado comunidades de intercambio centradas en GitHub. Npm hace que la publicación de paquetes sea tan fácil como instalarlos. Nodejs llegó el 2009 y ya tiene paquetes de 14k . El índice venerable del paquete Python enumera 24k. Ruby Gems enumera 44k paquetes.
Afortunadamente, hay un administrador de paquetes decente para Python, llamado Pip . Pip está inspirado en la gema de Ruby, pero carece de algunas características vitales (por ejemplo, la lista de paquetes y la actualización en masa ). Irónicamente, Pip en sí es complicado de instalar . La instalación en el popular Windows de 64 bits exige compilar e instalar dos paquetes desde la fuente. Esta es una gran pregunta para alguien nuevo en programación.
Los desarrolladores de Python ignoran toda esta frustración porque son programadores experimentados que se sienten cómodos construyendo desde la fuente, y usan distribuciones de Linux con módulos empaquetados de Python.
Hasta que Python se envíe con un gestor de paquetes, miles de desarrolladores perderán innecesariamente el tiempo reinventando la rueda.
Python 3 resuelve muchos problemas con el embalaje. No hay paquetes para Python 3 .
¿Alguien sabe la lógica detrás de los nombres de los módulos de Python frente al nombre del paquete real utilizado en easy_install?
Algunos ejemplos (entre otros) que me parecen un poco poco lógicos:
- Hacemos
easy_install mysql-python
, pero la importación es de hechoimport MySQLdb
- Hacemos
easy_install python-memcached
, pero la importación es de hecho,import memcache
(sin el d final)
No encontré una manera consistente de encontrar la equivalencia. Para algunos módulos, me costó mucho navegar para encontrarlo. ¿Qué estoy haciendo mal?
pip search mysql
Y esta es una buena lectura también: ¿Por qué usar pip sobre easy_install?