2012-05-29 10 views
16

estoy aprendiendo acerca de los paquetes de Python Python Aprender la manera dura y uno de los ejercicios que dice:¿Qué scripts entrarían en una carpeta bin de un paquete de Python?

Deja un script en el directorio bin que se puede ejecutar

Para mí, parece un poco vago No estoy exactamente seguro de qué tipo de scripts entraría en la carpeta bin. The Hitchhiker's Guide to Packaging dice

colocan en Intervalo cualquier script que has escrito que utilizan su paquete y lo que cree que sería útil para sus usuarios. Si no tiene ninguno, elimine el directorio bin.

Pero todavía me pregunto qué tipo de secuencia de comandos iría allí. Entonces, sé que puede sonar como una pregunta tonta, pero ¿alguien me puede dar un ejemplo de cuándo y por qué uno pondría "un script" en la carpeta bin de su paquete?

Respuesta

20

Acabo de atravesar Ex46 en LPTHW. Al igual que usted, estaba confundido por los guiones. En caso de que la otra respuesta era demasiado avanzado para ti, que terminó sólo poner en un simple "hola mundo" script:

#!/usr/bin/env python 

from test3 import printstring 
printstring.printstring("test script working") 
print "test over" 

me llamaron a aquel testscript3.py archivo (* Nota, más tarde supe que sería más conveniente para dejar fuera de la extensión del fichero .py si se tratara de un guión real que quería parecer como un comando del sistema)

Mi test3.py archivo era así:

def printstring(s='you did not provide string'): 
    print s 

Aquí hay algunas cosas novato que aprendí mientras intentaba que este proceso funcionara:

  • The #! el símbolo a veces se pronuncia shebang y la explicación simple es que el comando en esa línea le dice al shell que use python para ejecutar el script. Si deja la extensión de nombre de archivo ".py", entonces el usuario del script no necesita preocuparse por qué intérprete se necesita para ejecutar el script. Ver wikipedia shebang article.

  • Me corrió el siguiente comando para empaquetar la distribución:

    pitón setup.py sdist

  • Después de hacer eso, yo era capaz de instalar el paquete y la escritura mediante la ejecución de

    pip sudo instalar test3-0.1.tar.gz

  • Una cosa que me preocupaba eran los permisos en el archivo de script. Sin embargo, noté que distutils se encargó de esto al empacar (modo cambiado a 755 o lo que sea).

Puedes encontrar mi whole project for this example on github.

+1

+1 para la sección novato – Deepend

+0

muy agradable. gracias por compartir. – MikeiLL

Cuestiones relacionadas