En los días oscuros y antiguos de 2003, PEP 304 se lanzó para desafiar este problema. Su parche fue encontrado deficiente. Las dependencias de la plataforma variable del entorno y los sesgos de la versión la hicieron trizas y dejaron sus bits diseminados por los páramos.
Después de años de sufrimiento, un nuevo rival se levantó en los últimos días de 2009. Barry Warsaw convocó al PEP 3147 y lo envió a la batalla, empuñando un arma simple con habilidad. El PEP aplastó los archivos de PYC abarrotados, silenció a los waring Unladen Swallow y el intérprete de CPython, cada uno tratando de argumentar que su archivo PYC debería ser triunfante, y permitió que Python descansara tranquilamente con sus fantasmas muertos ocasionalmente corriendo en la oscuridad de la noche. PEP 3147 fue encontrado digno por el dictador y fue nombrado caballero en los papeles oficiales en los días de 3.2.
A partir de 3.2, Python almacena los archivos PYC de un módulo en __pycache__
en el directorio del módulo. Cada archivo PYC contiene el nombre y la versión del intérprete, por ejemplo, __pycache__/foo.cpython-33.pyc
. También puede tener un __pycache__/foo.cpython-32.pyc
compilado por una versión anterior de Python. La magia correcta ocurre: la correcta se usa y recompila si no está sincronizada con el código fuente. En tiempo de ejecución, observe el mymodule.__cached__
del módulo para el nombre del archivo pyc y analícelo con imp.get_tag()
. Ver the What's New section para más información.
TL; DR - Solo funciona en Python 3.2 y superior. Los hacks pobres sustituyen a las versiones anteriores.
¿Cómo intentó Python 3.2? Implementa los directorios de repositorio PEP 3147: PYC (http://www.python.org/dev/peps/pep-3147/). –
Si no le importan los archivos .pyc, puede usar 'os.system ('del * .pyc')' (ventanas, por ejemplo) al final de su script. – Charlie