Beim Berühren von Python "Das ...? Hast du die Pyc-Datei in letzter Zeit nicht gesehen?"
Mir ist aufgefallen.
Dann haben sich die Spezifikationen fest geändert (obwohl es ziemlich alt ist), also habe ich es geschrieben
Offiziell ist diese Erklärung geschrieben.
CPython compiles its source code into "byte code", and for performance reasons, it caches this byte code on the file system whenever the source file has changes. This makes loading of Python modules much faster because the compilation phase can be bypassed. When your source file is foo.py, CPython caches the byte code in a foo.pyc file right next to the source.
https://www.python.org/dev/peps/pep-3147/
In 3 Zeilen zusammenfassen
--Kompilieren Sie den importierten Quellcode von Zeit zu Zeit, um daraus eine computerlesbare Binärdatei zu machen! ――Binärdateien werden sehr schnell geladen!
Ist geschrieben. (Sehr grob)
Daher spielt es eine Rolle bei der Beschleunigung des Lesens.
├─ a.py
├─ b.py
└─ c.py
a.py
import b
import c
b.hello()
c.goodmorning()
b.py
def hello():
print("hello")
c.py
def goodmorning():
print("goodmorning")
hello
goodmorning
$ ls
a.py b.py b.pyc c.py c.pyc
Pyc-Datei war Hallo.
Aber eines Tages wurde diese Pyc-Datei nicht sofort erstellt.
Deutlich
Ich dachte, aber das war nicht der Fall.
Es scheint, dass sich der Speicherort von Python3.2 geändert hat.
Um zu verhindern, dass diese neuen Dateien das Quellverzeichnis überladen, werden Pyc-Dateien jetzt im Verzeichnis "pycache" unter dem Paketverzeichnis gesammelt.
https://docs.python.org/ja/3/whatsnew/3.2.html#pep-3147-pyc-repository-directories
Hmmm, es war sicherlich doppelt und schwer, den Quellcode zu finden.
Sie haben also die Verwaltungsmethode geändert.
Dieses Mal hat es die gleiche Dateistruktur, wurde aber mit python3.2 bestätigt (ich habe es mit 2.7 oben versucht)
├─ a.py
├─ b.py
└─ c.py
a.py
import b
import c
b.hello()
c.goodmorning()
b.py
def hello():
print("hello")
c.py
def goodmorning():
print("goodmorning")
$ ls
__pycache__ a.py b.py c.py
$ ls __pycache__/
b.cpython-37.pyc c.cpython-37.pyc
Ich konnte bestätigen, dass .pyc unter pycache / so erstellt wurde!