Debería poner #! (Shebang) ¿Qué forma debería tomar en un script de Python?

本文 翻译 自 :¿Debo poner #! (shebang) en los scripts de Python, y ¿qué forma debería tomar?

¿Debo poner el shebang en mis scripts de Python? ¿Debo poner el shebang en mis scripts de Python ? ¿De qué forma? ¿ De qué forma?

#!/usr/bin/env python 

o bien

#!/usr/local/bin/python

¿Son igualmente portátiles? ¿Son igualmente portátiles? ¿Qué formulario se usa más? ¿Qué formulario se usa más ?

Nota: elproyecto de tornado usa shebang Nota: el proyecto de tornado usa shebang. De la mano a la otra en Django proyecto no lo hace. Por otro lado, Django proyecto no.


Piso # 1

Referencia: https://stackoom.com/question/Sz7f/ ¿debo poner -shebang- en un script de Python? ¿Qué forma debería tomar?


# 2F

A veces, si la respuesta no es muy clara (quiero decir que no puede decidir si sí o no), entonces no importa demasiado, y puede ignorar el problema hasta que la respuesta sea clara. A veces, si la respuesta no es muy clara (I Significa que no puedes decidir sí o no), entonces no importa mucho, y hasta que la respuesta sea clara, puedes ignorar la pregunta.

El #! único propósito es lanzar el script, el único es lanzar el script . Django carga las fuentes por sí solo y las usa, Django cargará y usará las fuentes por sí solo . Nunca necesita decidir qué intérprete debe usarse . De esta manera, el modo, hace realidad Sentido NO aquí fondo de pantalla. Aquí no hay prácticamente ningún sentido.#! #! #!

En general, si se trata de un módulo y no se puede utilizar como un guión, no hay necesidad de utilizar el #! habitual, si se trata de un módulo y no se puede utilizar como una secuencia de comandos, no es necesario el uso #! . . Por otro lado, la fuente de un módulo a menudo contiene if __name__ == '__main__': ...al menos algunas pruebas triviales de la funcionalidad , mientras que la fuente del módulo generalmente contiene if __name__ == '__main__': ...y al menos algunas pruebas triviales de la función . Entonces el #! entonces #! tiene sentido nuevamente, tiene sentido nuevamente .

Una buena razón para utilizar #! el uso #!de una buena razón #! es cuando se utiliza tanto en Python 2 y Python 3 guiones - que deben ser interpretados por diferentes versiones de Python. Cuando es que cuando se utiliza Python 2 y Python 3 guión - que debe hacerse Diferentes versiones de Python explicadas. De esta forma, debe recordar lo que pythondebe usarse al iniciar el script manualmente (sin el #!interior). De esta manera, debe python#! recordar lo que debe usarse al iniciar el script manualmente (no dentro ). Si usted tiene una mezcla de tales secuencias de comandos , es una buena idea utilizar el #! Si se mezclan estos scripts, lo mejor es utilizar #! el interior, que sean ejecutables, y poner en marcha como ejecutables (chmod ...). Internamente, Configúrelo como un archivo ejecutable y luego inícielo como un archivo ejecutable (chmod ...).

Al usar MS-Windows, el #! uso de MS Windows, #! tenía sentido -. Recientemente registros en una hasta lo que no tiene sentido - hasta hace poco. Python 3.3 presenta un Lanzador de Python de Windows (py.exe y pyw.exe) que lee el #! Python 3.3 introduce un Lanzador de Python de Windows (py.exe y pyw.exe), que lee la #! línea, detecta las versiones instaladas de Python, y usa la versión correcta o explícitamente deseada de Python. OK, para detectar la versión instalada de Python y usar la versión correcta o explícitamente requerida de Python. Como la extensión se puede asociar con un programa, puede obtener un comportamiento similar en Windows como con el indicador de ejecución en sistemas basados ​​en Unix. Dado que la extensión se puede asociar con un programa, el indicador de ejecución en sistemas basados ​​en Unix se puede obtener en Windows Comportamiento similar


Piso # 3

Si tiene más de una versión de Python y el script necesita ejecutarse bajo una versión específica, el she-bang puede garantizar que se use el correcto cuando el script se ejecuta directamente, por ejemplo: si tiene varias versiones de Python, Y la secuencia de comandos debe ejecutarse en una versión específica, por lo que cuando se ejecuta directamente la secuencia de comandos, she-bang puede garantizar que se utilice la versión correcta, por ejemplo:

#!/usr/bin/python2.7

Tenga en cuenta que el script aún se puede ejecutar a través de una línea de comando completa de Python, o mediante importación, en cuyo caso se ignora el she-bang. Tenga en cuenta que el script aún se puede ejecutar a través de la línea de comando completa de Python o mediante importación, en este caso She-bang será ignorado. Pero para los scripts que se ejecutan directamente, esta es una razón decente para usar she-bang. Pero para los scripts que se ejecutan directamente, esta es una buena razón para usar she-bang .

#!/usr/bin/env pythongeneralmente es el mejor enfoque, pero esto ayuda con casos especiales. Generalmente es el mejor enfoque, pero esto ayuda #!/usr/bin/env pythonen casos especiales.

Por lo general, sería mejor establecer un entorno virtual de Python, en cuyo caso el genérico #!/usr/bin/env pythonidentificaría la instancia correcta de Python para virtualenv. Por lo general, es mejor establecer un entorno virtual de Python, en cuyo caso, el general #!/usr/bin/env pythonidentificará el virtualenv La instancia correcta de Python.


# 4F

La línea shebang en cualquier secuencia de comandos determina la capacidad de la secuencia de comandos para ejecutarse como un ejecutable independiente sin escribir de pythonantemano en el terminal o al hacer doble clic en un administrador de archivos (cuando está configurado correctamente). La línea shebang en cualquier secuencia de comandos determina que la secuencia de comandos tiene La capacidad de ejecutar como un archivo ejecutable independiente sin tener que ingresarlo en el terminal por adelantado pythono hacer doble clic en el administrador de archivos (si la configuración es correcta). No es necesario, pero generalmente se coloca allí, de modo que cuando alguien ve el archivo abierto en un editor, inmediatamente sabe lo que está mirando. No es necesario, pero generalmente se coloca allí, así que cuando alguien ve el archivo abierto en el editor Inmediatamente sabrán lo que están mirando. Sin embargo, el que utiliza el tinglado Line ES importante. Sin embargo, la línea de plata de la familia que está utilizando es muy importante.

El uso correcto de los scripts de Python 3 es: El uso correcto de los scripts de Python 3 es:

#!/usr/bin/env python3

El valor predeterminado es la versión 3.latest. El valor predeterminado es la versión 3.latest. Para Python 2.7.latest use python2en lugar de python3. Para Python 2.7.latest, use python2en su lugar python3.

Siguiente en el caso de que el no se puede utilizar (la excepción de que usted está en el código de la caja de escritura raras que sean compatibles tanto con Python 2.xy 3.x): Usted no debe usar la siguiente (excepto en casos raros, se está escribiendo con Python 2 .xy 3.x códigos compatibles):

#!/usr/bin/env python

La razón de estas recomendaciones, dadas en PEP 394 , es que pythonpueden referirse a diferentes sistemas python2o python3en la misma. La razón para dar estas recomendaciones en PEP 394 es que pythonpueden ser referenciadas python2o en diferentes sistemas python3. Actualmente se refiere a la python2mayoría de las distribuciones, pero es probable que eso cambie en algún momento. Actualmente, se usa en la mayoría de las distribuciones , pero esto puede cambiar en algún momento .python2

Además, NO use: Además , NO use :

#!/usr/local/bin/python

"Python puede instalarse en / usr / bin / python o / bin / python en esos casos, el #! anterior fallará". "En este caso, python puede instalarse en / usr / bin / python o / bin / En Python, el #! Anterior fallará ".

- "#! / usr / bin / env python" vs "#! / usr / local / bin / python" - “# # / usr / bin / env python” 与 “#! / usr / local / bin / python "


# 5F

¿Debo poner el shebang en mis scripts de Python? ¿Debo poner el shebang en mis scripts de Python ?

Pon un shebang en un script de Python para indicar: Pon un shebang en un script de Python para indicar :

  • este módulo se puede ejecutar como una secuencia de comandos del módulo se puede ejecutar como una secuencia de comandos
  • Si se puede ejecutar solo en python2, python3 o si es compatible con Python 2/3, ¿ solo se ejecuta en python2, python3 o es compatible con Python 2/3?
  • en POSIX, es necesario si desea ejecutar el script directamente sin invocar el pythonejecutable explícitamente en POSIX, si desea ejecutar el script directamente sin llamar explícitamente al pythonarchivo ejecutable, es necesario

¿Son igualmente portátiles? ¿Son igualmente portátiles? ¿Qué formulario se usa más? ¿Qué formulario se usa más ?

El tinglado que el escribir una SI manualmente la continuación, utilizar siempre #!/usr/bin/env pythonel menos que tenga tenga una razón específica para no usarlo. Si manualmente escribir el tinglado , por favor utilice siempre #!/usr/bin/env pythona menos que haya una razón específica para no usarlo. Este formulario se entiende incluso en Windows (Python Launcher). Este formulario se puede entender incluso en Windows (Python Launcher) .

Nota: Instalado guiones En caso de utilizar un pitón específica Ejecutable EG, /usr/bin/pythono /home/me/.virtualenvs/project/bin/python. Nota: los instalados secuencias de comandos debe utilizar un pitón particular, archivos ejecutables, por ejemplo, /usr/bin/pythono /home/me/.virtualenvs/project/bin/python. Es malo si alguna herramienta se rompe si activa un virtualenv en su shell. Si activa virtualenv en Shell, si algunas herramientas están rotas, es malo. Afortunadamente, el shebang correcto se crea automáticamente en la mayoría de los casos setuptoolso mediante las herramientas de su paquete de distribución (en Windows, setuptoolspuede generar .exescripts de envoltura automáticamente). Afortunadamente, en la mayoría de los casos, el setuptoolsshebang correcto (en En Windows, los scripts de setuptoolsenvoltura se pueden generar automáticamente .exe).

En otras palabras, si el script está en un checkout de origen, entonces probablemente verá #!/usr/bin/env python. En otras palabras, si el script está en checkout de origen , entonces puede verlo #!/usr/bin/env python. Si está instalado, entonces shebang es una ruta a un ejecutable de Python específico como #!/usr/local/bin/python(NOTA: no debe escribir las rutas de la última categoría manualmente). Si está instalado, entonces shebang es la ruta del archivo ejecutable de Python específico, por ejemplo #!/usr/local/bin/python( Nota: No debe escribir rutas manualmente desde la última categoría).

El Al elegir los tipos de modelo dentro de las que debe utilizar python, python2o python3en al Shebang, Ver PEP 394 - en el "Python" las SOBRE sistemas similares a Unix Command : Para seleccionar si se utiliza tinglado en python, python2o python3, por favor refiérase a la PEP 394-sistemas similares a Unix " comando "python" :

  • ... pythondebe ser usado en la cola del tinglado sólo para las secuencias de comandos que son compatibles tanto con Fuente-Python 2 y 3. ... pythonsólo se debe utilizar en la línea de tinglado en el guión es compatible con Python 2 y 3 fuentes.

  • En preparación para un cambio eventual en la versión predeterminada de Python, los scripts de Python 2 solo deben actualizarse para que sean compatibles con la fuente de Python 3 o para usar python2en la línea shebang. Para prepararse para el cambio final de la versión predeterminada de Python, solo Python El script para 2 se actualizó para que sea compatible con las fuentes de Python 3, o se usó en la línea shebang python2.


Piso # 6

Utilice primero el primero en utilizar

which python

Esto dará la salida como la ubicación donde está presente mi intérprete de Python (binario). Esto dará la salida como la ubicación donde está presente mi intérprete de Python (binario) .

Esta salida podría ser cualquiera, como esto puede ser cualquier salida

/usr/bin/python

o bien

/bin/python

Ahora seleccione apropiadamente la línea shebang y úsela .

Para generalizar podemos usar: Para resumir, podemos usar:

#!/usr/bin/env

o bien

#!/bin/env
Publicado 0 artículos originales · elogiado 75 · 560,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/w36680130/article/details/105468319
Recomendado
Clasificación