script run mac example convertir compileall compilar python shell scripting pyc

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í:

¿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.