Ich dachte, ich hätte die pyc-Datei kürzlich nicht gesehen, aber sie wurde von python3 in pycache isoliert

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

Was ist eine Pyc-Datei?

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.

Lassen Sie uns eine Pyc-Datei erstellen!

 ├─ 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")

Ergebnis

hello
goodmorning

$ ls
a.py		b.py		b.pyc		c.py		c.pyc

Pyc-Datei war Hallo.

Die Wahrheit über den Verbleib von Pyc

Aber eines Tages wurde diese Pyc-Datei nicht sofort erstellt.

Deutlich image.png

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.

Überprüfen Sie die neue Pyc-Datei

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")

Ergebnis

$ 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!

Recommended Posts

Ich dachte, ich hätte die pyc-Datei kürzlich nicht gesehen, aber sie wurde von python3 in pycache isoliert
Lesen Sie die Datei Zeile für Zeile mit Python
Lesen Sie die Datei Zeile für Zeile mit Python
Der Dateiname war in Python schlecht und ich war süchtig nach Import
In Bash "Löschen Sie die Datei, falls vorhanden".
Der von pysheng gespeicherte Dateiname war eine Hexadezimalzahl, daher habe ich ihn behoben.
Als ich die von Django generierte Abfrage überprüfte, wurde sie in großer Anzahl ausgegeben
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Ich fragte mich, ob Python 3.4 schneller war, aber es war langsamer
Python: Kann in Lambda wiederholt werden
Es war großartig, die Python-Datei in Raspberry Pi mit der Remote-Funktion von Atom zu bearbeiten
[Python] Öffnen Sie die CSV-Datei in dem von Pandas angegebenen Ordner
Ich dachte über die Logik nach, die / 22 oder / 23 in / 24 Einheiten unterteilt, indem der IP-Bereich in Python angegeben wird.
Überprüfen Sie, ob der von PHP generierte Passwort-Hash in Python übereinstimmt
Löschen Sie ein bestimmtes Zeichen in Python, wenn es das letzte ist
Sortieren Sie die von Python glob erhaltenen Dateinamen in numerischer Reihenfolge
Speichern Sie die Binärdatei in Python
Ich habe die Warteschlange in Python geschrieben
Ich habe den Stack in Python geschrieben
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
Ein Memo, das durch Umbenennen der Dateinamen im Ordner mit Python organisiert wird
Ich habe Umgebungsvariablen in Docker festgelegt und in Python angezeigt.
Überprüfen Sie den Dateinamen, wenn Sie durch Python-Import nicht informiert werden
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Ich dachte, es sei dasselbe wie Python, und ich war süchtig nach dem Problem, dass der Ruby-Interpreter nicht gestartet wurde.
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
Überprüfen Sie, ob die URL in Python vorhanden ist
Ich kannte die Grundlagen von Python nicht
[Python] Lesen Sie die angegebene Zeile in der Datei
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
Beachten Sie, dass ich den Algorithmus der kleinsten Quadrate verstehe. Und ich habe es in Python geschrieben.
Fourier-Konvertierung der von Python gelesenen WAV-Datei, umgekehrte Konvertierung und erneutes Schreiben
[Python] Keine Ich habe nullutil.py erstellt, weil es durch Überprüfen und Verzweigen überfüllt war.
Ich möchte den Dateinamen, die Zeilennummer und den Funktionsnamen in Python 3.4 erhalten