2012-07-16 7 views
6

Vorrei pacchettizzare un'applicazione Python scientifica per PyPI. Il mio problema è che si basa su depi di livello PyPI (ad esempio numpy, scipy, ecc.) E su altri che devono essere trattati a livello di sistema operativo: wxPython e Python-VTK (ad esempio con apt-get su Ubuntu, homebrew su OSX, ecc.).Confezione di un'app Python con dipendenze a livello di sistema operativo PyPI +

Mi piacerebbe sapere quale sarebbe la strategia ideale per farlo, e in particolare, quale sistema di packaging si adatta meglio (attualmente sto favorendo la distribuzione).

risposta

3

distribute è un fork di setuptools con una migliore documentazione. Fondamentalmente hai distutils (stdlib) e setuptools come tue scelte. Poiché distutils non consente di specificare le dipendenze, viene lasciato solo setuptools.

Generalmente si elencano tutte le dipendenze e si documenta chiaramente la procedura di installazione (incluso nel campo long_description inviato a PyPI). Includere i pacchetti installati a livello di sistema operativo, la maggior parte delle distribuzioni includono le informazioni sulle uova durante l'installazione di questi.

+0

Grazie Martijn. Oltre a elencare e documentare chiaramente i passaggi di installazione, setuptools fornisce qualche meccanismo aggiuntivo che potrebbe aiutare nello scripting dell'installazione dei deps a livello di sistema operativo? In caso contrario, mi chiedo quale sarebbe il vantaggio di registrare il mio pacchetto su PyPI affatto (voglio dire, se richiede all'utente di eseguire ulteriori passaggi manuali, cioè se non è in grado di automatizzare completamente il processo). – cjauvin

+0

No, mi dispiace. Né setuptools né gli strumenti di installazione (pip, easy_install, zc.buildout) forniscono supporto per questo. Ma, anche per molte uova disponibili su PyPI, è comunque necessario installare le dipendenze a livello di sistema operativo; cxOracle richiede i driver oracle, PIL ha bisogno di libjpeg e simili, ecc. Inoltre, alcune delle tue dipendenze sono meglio installate dall'OS, ma * può * essere installato anche come uova. Questo è un problema difficile da risolvere solo con gli strumenti, quindi la documentazione è il modo migliore per procedere. –