2012-07-12 10 views
17

Qualcuno conosce la logica dei nomi dei moduli Python rispetto al nome del pacchetto reale utilizzato in easy_install?Dato il nome di un pacchetto Python, qual è il nome del modulo da importare?

A pochi (tra gli altri) di esempio che sembrano un po 'illogiche a me:

  • Facciamo easy_install mysql-python, ma l'importazione è in realtà import MySQLdb
  • Facciamo easy_install python-memcached, ma l'importazione è in realtà import memcache (senza il finale d)

Non ho trovato un modo coerente di trovare l'equivalenza. Per alcuni moduli, ho impiegato molto tempo per trovarlo. Che cosa sto facendo di sbagliato?

+3

Spetta al pacchetto manutentore come denominare il pacchetto e moduli al suo interno. –

+10

Sto votando per riaprire. Solo perché non c'è una buona risposta non significa che non fosse una buona domanda, e mi dispiacerebbe vederlo cancellato in un imprevisto di pulizie. –

risposta

13

Purtroppo, non c'è alcun metodo per la follia. Il nome nel numero package index è indipendente dal nome del modulo import. Disastroso some packages share module names. Se si installano entrambi, l'applicazione si interromperà con quote pari. (Ruby has this problem too)


Il packaging in Python è generalmente disastroso. La causa principale è che la lingua viene fornita senza un gestore di pacchetti. Ruby e Nodejs vengono forniti con i gestori di pacchetti completi Gem e Npm e hanno nutrito comunità di condivisione incentrate su GitHub. Npm rende publishing packages facile come installarli. Nodejs è arrivato nel 2009 e ha già 14k packages. Il venerabile elenco di pacchetti Python elenca 24k. Ruby Gems elenca i pacchetti da 44k.

Fortunatamente, esiste un gestore di pacchetti decente per Python, denominato Pip. Pip è ispirato a Ruby's Gem, ma manca di alcune funzioni vitali (ad esempio elencando i pacchetti e upgrading en mass). Ironia della sorte, Pip stesso è complicated to install. L'installazione sul popolare Windows a 64 bit richiede la creazione e l'installazione di due pacchetti dall'origine. Questo è un grande chiedere a chiunque sia nuovo alla programmazione.

Gli sviluppatori di Python ignorano tutta questa frustrazione perché sono programmatori esperti che si adattano facilmente ai sorgenti e utilizzano le distribuzioni Linux con moduli Python integrati.

Fino a quando Python viene fornito con un gestore di pacchetti, migliaia di sviluppatori sprecano inutilmente tempo a reinventare la ruota.


Python 3 risolve molti problemi con l'imballaggio. Ci aren't any packages for Python 3.

+1

Spero davvero che questa risposta sia parzialmente ironica. Continuo a ripetermi che parti di questo * non possono * essere seri, ma altre parti sono azzeccate ... – delnan

+0

L'installazione di pip su win64 è davvero così brutta? Di solito scaricavo il programma di installazione setuptools quindi eseguivo 'easy_install pip'. Anche se sto usando python a 32 bit, quindi forse è lì che sta la differenza. – obmarg

+0

Esatto. Non c'è un programma di installazione [setuptools] (http://pypi.python.org/pypi/setuptools/) per Python a 64 bit. "Attualmente, il fornito.exe installer non supporta le versioni a 64 bit di Python per Windows, a causa di un problema di compatibilità di distutils installer. "Scorro gli amici dall'installazione di Python a 64 bit. –