2009-04-22 40 views
10

¿Cuál es el comando mágico "python setup.py some_incantation_here" para cargar un paquete a PyPI, en un formulario que se puede descargar para obtener el paquete original en su forma original?Cómo subir un paquete de Python prístino a PyPI?

Tengo un paquete con alguna fuente y algunos archivos de imagen (como package_data). Si hago "setup.py sdist register upload", el archivo .tar.gz tiene los archivos de imagen excluidos. Si hago "setup.py bdist_egg register upload", el huevo contiene las imágenes pero excluye el archivo setup.py. Quiero poder subir un archivo que es solo la totalidad de mi proyecto, también conocido como "setup.py the_whole_freaking_thing register upload".

¿Quizás la mejor manera de hacerlo es tar.gz manualmente mi directorio de proyecto y subirlo usando la interfaz web de PyPI?

Advertencia: Estoy tratando de evitar tener que almacenar un proyecto simple que acabo de crear en mi repositorio SVN, así como en PyPI - parece una pérdida de trabajo mantener un registro de su historial y archivos en dos lugares .

Respuesta

16

Cuando realiza un comando "sdist", entonces lo que controla la lista de archivos incluidos es su archivo "MANIFEST.in" que se encuentra junto a "setup.py", no lo que haya enumerado en "package_data". Esto tiene algo que ver con la naturaleza esquizofrénica de las soluciones de empaque de Python en la actualidad; "sdist" funciona con el distutils en la biblioteca estándar, mientras que "bdist_egg" está controlado por el módulo setuptools.

Para resolver el problema, intente crear un MANIFEST.in junto a su archivo setup.py, y darle contenido como esto:

include *.jpg 

Por supuesto, estoy de imágenes que sus "archivos de imagen" son imágenes reales en lugar de imágenes de disco o imágenes ISO o algo así; es posible que tengas que ajustar la línea anterior si he adivinado mal. Pero consulte la sección Specifying which files to distribute de los documentos de distutils, y vea si no puede obtener esos archivos en su distribución fuente .tar.gz. Buena suerte.

+0

¡Perfecto! "include nosenotify/*. png" era el formato que necesitaba, ya que mis archivos estaban en un subdirectorio; este formato garantizaba que el directorio .tar.gz nosenotify/contenía sus archivos .png. –

+2

PS Brandon, irónicamente después de leer su respuesta fui a su blog y vi la publicación de un día antes de mi pregunta, diciendo que estaba tan harto de setup.py que estaba haciendo pyron. :) –

Cuestiones relacionadas