programacion paquetes modulos lista librerias importar crear clases bibliotecas python pip easy-install pypi

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 hecho import 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?