2012-07-12 24 views
17

¿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?Dado el nombre de un paquete de Python, ¿cuál es el nombre del módulo para importar?

Unos pocos (entre otros) ejemplo, que parece un poco ilógico para mí:

  • 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 final d)

No encontré una manera consistente de encontrar la equivalencia. Para algunos módulos, me llevó un montón de navegación encontrarlo. ¿Qué estoy haciendo mal?

+3

Corresponde al responsable del paquete, cómo nombrar el paquete y módulos en su interior. –

+10

Voy a votar para reabrir. El hecho de que no haya una buena respuesta no significa que no sea una buena pregunta, y odiaría ver que se elimine en un ataque de limpieza. –

Respuesta

13

Lamentablemente, no hay ningún método para la locura. El nombre en el package index es independiente del nombre del módulo import. Desastrosamente some packages share module names. Si instala ambos, su aplicación se romperá con probabilidades. (Ruby has this problem too)


Envasar en Python es generalmente calamitoso. La causa principal es que el idioma se envía sin un administrador de paquetes. Ruby y Nodejs se envían con los gerentes de paquetes con todas las funciones Gem y Npm, y han nutrido comunidades de intercambio centradas en GitHub. Npm hace que publishing packages sea tan fácil como instalarlos. Nodejs llegó en 2009 y ya tiene 14k packages. El venerable índice de paquete de Python lista 24k. Ruby Gems enumera 44k paquetes.

Afortunadamente, hay un administrador de paquetes decente para Python, llamado Pip. Pip está inspirado en Ruby's Gem, pero carece de algunas características vitales (por ejemplo, listados de paquetes, y upgrading en mass). Irónicamente, Pip en sí es complicated to install. La instalación en Windows popular de 64 bits exige construir e instalar dos paquetes desde el origen. Esta es una gran pregunta para cualquier persona nueva en la programación.

Los desarrolladores de Python ignoran toda esta frustración, ya que son programadores avezados que construyen cómodamente desde la fuente, y usan distribuciones de Linux con módulos de Python empaquetados.

Hasta que Python se envíe con un administrador de paquetes, miles de desarrolladores perderán innecesariamente el tiempo reinventando la rueda.


Python 3 resuelve muchos problemas con el embalaje. Hay aren't any packages for Python 3.

+1

Espero que esta respuesta sea parcialmente irónica. Sigo diciéndome a mí mismo que partes de esto * no pueden * ser graves, pero otras partes son acertadas ... – delnan

+0

¿Está realmente mal instalar pepita en Win64? Normalmente solo descargo el instalador de setuptools y luego ejecuto 'easy_install pip'. Aunque estoy usando Python de 32 bits, tal vez sea ahí donde radique la diferencia. – obmarg

+0

Eso es correcto. No hay instalador [setuptools] (http://pypi.python.org/pypi/setuptools/) para Python de 64 bits. "Actualmente, el proporcionado.El instalador exe no es compatible con las versiones de 64 bits de Python para Windows, debido a un problema de compatibilidad del instalador de distutils. "No recomiendo a los amigos instalar 64 bit Python. –

Cuestiones relacionadas