mac - run python script linux
Evite que Python genere archivos pyc en shebang (4)
De acuerdo con la página man para env, puede pasar name=value
para establecer variables de entorno. La variable de entorno PYTHONDONTWRITEBYTECODE
hace que Python no escriba archivos .py [co] (lo mismo que el -B
a python
). Entonces usando
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python
debería hacer el truco.
EDITAR:
Probé esto con un simple script de Python:
#!/usr/bin/env PYTHONDONTWRITEBYTECODE=1 python
print 1
entonces
$chmod +x test.py
$./test.py
1
$ls
test.py
(pero no test.pyc
)
Esta pregunta ya tiene una respuesta aquí:
- ¿Cómo evitar los archivos .pyc? 8 respuestas
¿Hay alguna manera de evitar que python cree archivos .pyc, que ya están en el shebang (o número mágico, si se quiere) del script de Python?
No funciona:
#!/usr/bin/env python -B
Por desgracia, no. Las cosas de shebang se limitan a dar un ejecutable y un parámetro.
Entonces env
intenta ejecutar python -B
con el archivo dado como un argumento en lugar de python
con -B
y el archivo actual como dos argumentos.
No veo una manera de lograr el objetivo deseado.
Sí, si y solo si, suponemos que el programa Python se ejecuta en un sistema algo POSIX compatible (para / bin / sh), esto funcionará:
( MEJORADO según la información de glglgl)
#!/bin/sh
"exec" "python" "-B" "$0" "$@"
# The rest of the Python program follows below:
es posible poniendo su ruta python interperter directamente en el she bang en lugar de usar env.
#!/usr/bin/python -B
por supuesto, esto significa que perderá algunos de los beneficios de portabilidad del uso de env. Hay una discusión de este problema con env en la página wikipedia Shebang . Usan Python como uno de sus ejemplos de env.