2017-07-17 61 views
0

我寫了一個簡單的腳本test.py,包含:python3 -O file.py沒有創造file.pyo

print('hello') 

,然後用python -O test.py運行它。我預計這會創建一個test.pyo文件,但它沒有。

我的版本是3.5.2的Python。爲什麼沒有創建緩存文件?

回答

5

的Python只爲導入模塊創建字節碼緩存文件。主腳本(此處爲test.py)未被緩存。無論應用哪種優化級別都無關緊要。

進口test

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

注意緩存文件是在一個單獨的目錄創建,命名__pycache__,並且該文件名不僅基於模塊的名稱,而且還對Python版本和優化級別;使用-OO獲得.opt-2。對於Python 3.5,則.pyo文件擴展名不再使用,見PEP 488 -- Elimination of PYO files,看PEP 3147 -- PYC Repository Directories,爲什麼一個單獨的目錄中。

如果你想預編譯的模塊,使用python3 -m compileall tool