2013-03-28 8 views
7

Es scheint mir, dass wenn ich Protobuf in Python verwenden muss ich es zuerst installieren, so dass ich auch SetupTools installiert habe. Mir scheint, dass dies die Portabilität stark einschränkt, da ich Protobuf auf jeder Maschine installieren müsste, auf der ich jede Art von Python-Code mit Hilfe von Protobuf verwenden möchte.Verwenden von Google Protobuf in Python ohne es zu installieren

Also meine Frage ist: Gibt es eine Möglichkeit, protobuf für Python so zu packen, dass es mit dem Python-Code damit verteilt werden kann?

Alle Informationen hierzu würden geschätzt.

Antwort

3

Das Paket enthält eine experimentelle C++ Erweiterung, und die Setup-Datei generiert Python-Dateien, aber mit der standardmäßig deaktivierten Erweiterung sollten Sie in der Lage sein, das setup.py build Ergebnis mit Ihrem Skript in Ordnung zu bringen.

Beachten Sie, dass das Python-Paket weiterhin das zu installierende Befehlszeilentool benötigt. Das Tool wird verwendet, um etwas Python für Sie zu generieren.

Sobald das verfügbar ist, läuft:

cd python 
python setup.py build 

und kopieren Sie das build/lib/google Verzeichnis Skript Verteilung, muss es auf Ihrem sys.path seinen importierbar zu sein.

Alternativ verwenden Sie setup.py bdist --formats=zip und fügen Sie den Pfad zur resultierenden ZIP-Datei (in dist/protobuf-<version>.<platform>-<architecture>.zip) zu Ihrem sys.path hinzu. Umbenennen sollte in Ordnung sein.

Beachten Sie, dass das Paket einen Namespace verwendet und daher das Modul pkg_resources ebenfalls verfügbar sein muss. Es wird nur verwendet, um den google-Namespace in google/__init__.py zu deklarieren.

+0

Ich versuchte diesen Put konnte nicht herausfinden, wie. Könnten Sie mir bitte ein paar Hinweise geben, was ich mit der Zip- und Eildatei machen soll? Sie einfach auf den PythonPath zu setzen, scheint den Trick nicht zu machen. – Cornelius

+0

@Cornelius: Ich war dabei, zu aktualisieren; Ein 'Build' ist genug, wirklich. –

+0

Ah, ja, das war meine erste Schätzung, aber wenn ich das mache, bekomme ich die Fehlermeldung: "ImportError: Kein Modul namens pkg_resources". Angeblich weil ich setuptools nicht installiert habe. Ist das das, was Sie mit dem Befehlszeilentool meinen? – Cornelius

Verwandte Themen