Importieren der gesamte Python-Standardbibliothek
Frage
Ich brauche einen Weg, um die gesamte Python-Standardbibliothek in mein Programm zu importieren.
Dies mag zwar wie eine schlechte Idee scheint, möchte ich dies zu tun ist, so wird py2exe die gesamte Standard-Bibliothek mit meinem Programm-Paket, so dass meine Benutzer es in der Shell importieren könnten, die ich ihnen geben.
Gibt es eine einfache Möglichkeit, dies zu tun?
Bonuspunkte: Ich würde es vorziehen, dass diese Aktion die Pakete nicht importieren ich in Website-Pakete installiert haben und die mit Python nicht gekommen. Dies ist jedoch nicht kritisch.
Lösung
Hey, ich dachte nur etwas: Ich brauche nur eine Liste aller Module in stdlib, und dann werde ich automatisch ein Python-Skript generieren, die jeder von ihnen „von Hand“, wie diese Importe:
import re
import math
import time
# ...
Und dann schließen, dass mit meinem Programm.
Also alles, was ich jetzt brauchen, ist eine leicht formatierte Liste aller Module / Pakete in stdlib. Nun, wie kann ich das?
UPDATE:
habe ich die Liste wie folgt: Ich Python installiert 2.6 auf einer virtuellen Maschine, dann lief in IDLE:
import pkgutil
stuff = [thing[1] for thing in pkgutil.iter_modules()]
stuff.sort() # To make it easy to look through
print(stuff)
Dann die Ausgabe in meine IDE Kopie geklebt, und machte ein kleines Skript zu schreiben:
if False:
import re
import email
import time
# ...
In einem Python-Modul, das ich in meinem Programm importiert werden.
Es funktioniert! py2exe packt die gesamte stdlib.
UPDATE:
Ich habe ein Paket, das dies tut. Ich würde es hier hochladen, aber da ich keinen Upload-Button sehen, können Sie es aus meinem Projektordner erhalten:
http://github.com/cool-RR/PythonTurtle/tree/master
Es ist im Ordner src
wird das Paket mit dem Namen almostimportstdlib
und es ist dokumentiert.
Andere Tipps
habe ich eine Zip-Datei aus dem all Python-Standardbibliothek und hinzugefügt, um es dann sys.path
, wenn das Programm gestartet wird.
Sie können an den Quellen einen Blick hier (aufgegeben Projekt )