Welche Standardbibliotheksmodule werden zum Ausführen des Python 3.5-Interpreters benötigt?

8

Hier ist ein CPython-Programm, das versucht, den Interpreter mit einem leeren sys.path :

zu initialisieren %Vor%

Beim Ausführen des obigen Programms tritt der folgende Fehler auf:

%Vor%

Also, welche der Pakete und Module in der Python 3.5 Standardbibliothek, außer dem encodings -Paket, sind absolut notwendig, um den Python 3.5 Interpreter auszuführen? Diese Information scheint mir in der Dokumentation nicht enthalten.

    
Jovito 16.11.2016, 14:02
quelle

3 Antworten

6

Dies sind Pakete / Module, die während des Startvorgangs des Interpreters verwendet werden (z. B. @Charles Duffy in einem Kommentar, indem in sys.modules gesucht wird).

Das Ergebnis hängt davon ab, ob Sie site aktiviert haben oder nicht (Ihr Py_NoSiteFlag = 1; deutet an, dass dies nicht der Fall ist, aber trotzdem gebe ich beide Optionen: -)).

site zieht ein paar zusätzliche Module mit sich, wenn Sie es wie _sitebuiltins und stat verwenden, insgesamt könnten Sie Python nur mit folgendem ausführen:

%Vor%

Wenn site deaktiviert ist, werden Sie auf die folgende 6 reduziert:

%Vor%

Wenn% C mit Py_Initialize() aufgerufen wird (oder Windows basierend auf Ihrem Kommentar) Ich schätze, os.py wird möglicherweise nicht benötigt.

    
Jim Fasarakis Hilliard 22.11.2016, 11:42
quelle
1

Wenn Sie den Interpreter wie Charles Duffy in seinem Kommentar vorschlagen, laden Sie Pakete wie readline . Es ist ein Jahrzehnt her, seit ich das gemacht habe, aber IIRC Sie brauchen dieses Modul nicht, wenn Sie Python als Erweiterung für Ihr C-Programm verwenden, da es keine Befehlszeileninteraktion gibt. Das Gleiche gilt für andere Module.

Der schnellste Weg, um zu bestimmen, was wirklich benötigt wird, mit nur einer geringen Chance, zu viel einzusteigen, besteht darin, alles von lib / python3.5 dort zu platzieren, wo Ihr Programm es finden kann, und im Programm sys.modules auszudrucken gibt Ihnen eine Liste dessen, was Ihr Programm tatsächlich geladen hat, nicht was der Interpreter zum Starten benötigt. Danach entfernen Sie alles, was nicht auf dieser Liste steht.

    
Anthon 22.11.2016 12:15
quelle
1

Hier ist ein anderer Ansatz - Fragen Sie den Python-Interpreter, welche Module geladen werden:

%Vor%

_bootlocale ist nicht erforderlich, wird jedoch empfohlen. Es wird verwendet, um die beste Kodierung für sys.stdin / sys.stdout / sys.stderr zu initialisieren. Siehe Ссылка

sys.modules kann liegen, wie es veränderbar ist.

    
Chih-Hsuan Yen 20.12.2016 17:32
quelle