2017-07-17 1 views
0

J'ai écrit un simple script test.py, contenant:python3 -O file.py n'a pas créé file.pyo

print('hello') 

puis utilisez python -O test.py pour l'exécuter. Je m'attendais à ce que cela crée un fichier test.pyo mais ce n'est pas le cas.

Ma version est Python 3.5.2. Pourquoi aucun fichier cache n'a été créé?

Répondre

5

Python crée uniquement des fichiers de cache de bytecode pour les modules importés. Le script principal (ici test.py) n'est pas mis en cache. Peu importe le niveau d'optimisation appliqué.

Importationtest:

$ python -O -c 'import test' 
hello 
$ ls __pycache__ 
test.cpython-35.opt-1.pyc 

Notez que le fichier de cache a été créé dans un répertoire distinct, nommé __pycache__, et que le nom de fichier est basé non seulement sur le nom du module, mais aussi sur la Version Python et niveau d'optimisation utilisez -OO pour obtenir .opt-2. À partir de Python 3.5, l'extension de nom de fichier .pyo n'est plus utilisée, voir PEP 488 -- Elimination of PYO files et voir PEP 3147 -- PYC Repository Directories pour savoir pourquoi un répertoire distinct est utilisé.

Si vous souhaitez pré-compiler vos modules, utilisez le python3 -m compileall tool.