2013-03-28 35 views
7

在我看來,當我在python中使用protobuf時,我需要先安裝它,以便我還安裝了setuptools。對我來說,這似乎是嚴格限制可移植性,因爲我將不得不在每臺機器上安裝protobuf,我希望使用protobuf來使用任何類型的python代碼。在沒有安裝的情況下在python中使用谷歌的protobuf

所以我的問題是:有沒有辦法將python的protobuf以這種方式打包,以便可以使用python代碼進行分發?

任何信息將不勝感激。

回答

3

該軟件包包含一個實驗性的C++擴展,安裝文件生成Python文件,但默認情況下禁用了擴展名,您應該能夠在腳本中包含setup.py build結果。

請注意,Python軟件包仍然需要安裝命令行工具。該工具用於爲您生成一些Python。

一旦可用,運行:

cd python 
python setup.py build 

build/lib/google目錄複製到你的腳本的分佈,它需要你的sys.path要導入的。

或者,使用setup.py bdist --formats=zip並將生成的zip文件的路徑(位於dist/protobuf-<version>.<platform>-<architecture>.zip)添加到您的sys.path。重命名它應該沒問題。

請注意,軟件包使用命名空間,因此pkg_resources模塊也需要可用。它僅用於在google/__init__.py中聲明google命名空間。

+0

我試過這個把無法弄清楚如何。你能給我一些關於如何處理zip和egg文件的提示。把它們放在PythonPath上似乎沒有辦法。 – Cornelius

+0

@Cornelius:我正在更新;一個'build'就夠了,真的。 –

+0

嗯,是的,那是我第一次猜測,但如果我這樣做,我會收到錯誤消息:「ImportError:No module named pkg_resources」。據說因爲我沒有安裝setuptools。這是你的命令行工具的意思嗎? – Cornelius

相關問題