2013-03-28 6 views
7

Wydaje mi się, że kiedy używam protobuf w pythonie, muszę najpierw zainstalować go, aby również zainstalować setuptools. Wydaje mi się, że to znacznie ogranicza możliwości przenoszenia, ponieważ musiałbym zainstalować protobuf na każdej maszynie, na której chciałbym użyć dowolnego rodzaju kodu Pythona używając protobuf.Używanie protobufa google w pythonie bez instalowania go

Moje pytanie brzmi: czy istnieje sposób pakowania protobuf dla Pythona w taki sposób, aby można go było rozpowszechniać za pomocą kodu Pythona?

Wszelkie informacje na ten temat będą mile widziane.

Odpowiedz

3

Pakiet zawiera eksperymentalne rozszerzenie C++, a plik instalacyjny generuje pliki w języku Python, ale z rozszerzeniem domyślnie wyłączonym, powinieneś być w stanie dołączyć do skryptu wynik setup.py build ze skryptem.

Należy pamiętać, że pakiet Pythona nadal wymaga zainstalowania narzędzia wiersza polecenia. Narzędzie służy do wygenerowania dla Ciebie jakiegoś Pythona.

Raz, że jest dostępny, uruchom:

cd python 
python setup.py build 

i skopiować do katalogu build/lib/google dystrybucji skryptu, musi być na sys.path być importable.

Alternatywnie, użyj setup.py bdist --formats=zip i dodaj ścieżkę do wynikowego pliku zip (znajdującego się w dist/protobuf-<version>.<platform>-<architecture>.zip) do swojej sys.path. Zmiana nazwy powinna być w porządku.

Należy zauważyć, że pakiet korzysta z przestrzeni nazw, dlatego też musi być dostępny moduł pkg_resources. Jest używany tylko do deklarowania przestrzeni nazw google w google/__init__.py.

+0

Próbowałem tego put nie mógł dowiedzieć się, jak. Czy możesz mi podać kilka wskazówek, co zrobić z plikiem zip i jajkiem. Po prostu umieszczenie ich w PythonPath nie wydaje się zdziałać. – Cornelius

+0

@Cornelius: Byłem w trakcie aktualizacji; wystarczy "build". –

+0

Ach, tak, to było moje pierwsze przypuszczenie, ale jeśli to zrobię, otrzymuję komunikat o błędzie: "ImportError: Brak modułu o nazwie pkg_resources". Podobno, ponieważ nie mam zainstalowanych setuptools. Czy to masz na myśli przez narzędzie wiersza polecenia? – Cornelius