2009-07-12 15 views
28

He creado un script de python destinado a ser utilizado desde la línea de comandos. ¿Cómo hago para empaquetarlo? Este es mi primer paquete de Python y he leído un poco sobre setuptools, pero todavía no estoy seguro de la mejor manera de hacerlo.Cómo empaquetar una línea de comandos Script de Python


Solución

Terminé usando setup.py con las configuraciones de teclas indicadas a continuación:

setup(
.... 
    entry_points=""" 
[console_scripts] 
mycommand = mypackage.mymodule:main 
""", 
.... 
) 

He aquí una buena example en su contexto.

+0

Qué plataforma (s) ¿se desplegará en? – ChristopheD

+0

Idealmente, * nix o windows. – Zach

Respuesta

3

@Zach, dada su aclaración en su comentario a la respuesta de @soulmerge, parece que lo que necesita es escribir un setup.py según las instrucciones sobre el distutils - here en particular, es cómo se registra en pypi, y here sobre cómo cargar a pypi una vez que se registre - y posiblemente (si necesita alguna funcionalidad extra lo que los distutils suministran por su cuenta) agregue setuptools, de los cuales easy_install es parte, a través de las instrucciones here.

+0

Esta respuesta, afortunadamente, está un poco desactualizada. Una buena fuente de información ahora es https://packaging.python.org/en/latest/, así como el artículo que he señalado en mi respuesta. –

2

¿Qué quieres decir con packaging? Si se trata de ejecutar un solo script en un recuadro que ya tiene Python instalado, solo tiene que poner un shebang en la primera línea del archivo y listo.

Si desea que se ejecute en Windows o en una caja sin Python, necesitará algo externo, como pyinstaller.

Si su pregunta es sobre dónde colocar los archivos de configuración/datos, tendrá que trabajar de manera dependiente de la plataforma (como escribir en registry o home folder), hasta donde yo sé.

+0

Consiste en dos archivos python.Quiero empaquetarlo para distribuirlo en PiPy, por ejemplo, e instalarlo con easy_install. – Zach

4

En lugar de utilizar setuptools forma no estándar de procedimiento, es posible invocar directamente la función distutils de configuración, utilizando el argumento scripts, como se ha dicho aquí: http://docs.python.org/distutils/setupscript.html#installing-scripts

from distutils import setup 
setup(
    ..., 
    scripts=['path/to/your/script',], 
    ... 
) 

Se le permite permanecer compatibles a) con todas las versiones de python yb) no tener que depender de una configuración de herramientas como una dependencia externa.

1

El mes pasado, escribí un artículo que respondía exactamente a su pregunta. Lo puedes encontrar aquí: http://gehrcke.de/2014/02/distributing-a-python-command-line-application/

allí, estoy usando métodos sólo recomendados actualmente (cordel, setuptools puros en lugar de distutils, la clave console_scripts en el diccionario entry_points, ...), que trabajan para Python 2 y 3.

0

Para aquellos que son principiantes en Python Packaging, sugiero pasar por este Python Packaging Tutorial.

Nota sobre el tutorial:

En este momento, esta documentación se centra en Python 2.x solamente, y no puede ser tan aplicable a los paquetes dirigidos a Python 3.x

Cuestiones relacionadas