2014-01-17 77 views
6

我一直試圖在我的Python程序中使用協議緩衝區,但無法讓它正常工作。我正在運行Windows 8機器,並嘗試過Python 2.7.6和Python 3.3。 我下載了Python的二進制協議緩衝編譯器,並用它從我的myProto.proto文件生成myProto_pb2.py,但是當我收到以下錯誤,當我跑我的Python程序:從「進口myProto_pb2」行如何在Windows上使用Python協議緩衝區?

,我得到的

from google.protobuf import descriptor as _descriptor 
    ImportError: No module named google.protobuf 

我怎樣才能正確地從Windows上的Python安裝和運行協議緩衝區:從協議緩衝區2.5版使用Python 2.7.6時,下面的錯誤?

回答

8

如何在Windows上正確安裝並從Python運行協議緩衝區?

與其他任何軟件包一樣,如果要安裝它,則必須實際安裝它。如果你只是試着運行在你的源代碼目錄中的軟件包,它可能可能工作,但大多數軟件包不能這樣工作;你傾向於獲得像頂級包import ing這樣的東西,然後在嘗試import其他東西時會失敗幾行......完全如您所見。

我相信一個可安裝的軟件包來自GoogleCode的主要下載軟件包。至少它適用於源代碼包,如果不是win32包的話。並且在python目錄內有完整的安裝說明。基本上是:

C:\path\to\protobuf-2.5.0> cd python 
C:\path\to\protobuf-2.5.0\python> python setup.py build 
C:\path\to\protobuf-2.5.0\python> python setup.py test 
C:\path\to\protobuf-2.5.0\python> python setup.py install 

但如果不來了Win32預編譯的軟件包,或者你沒有它躺在身邊了,或者你只是喜歡安裝過的PyPI,它也提供there。所以,假設you've got pip installed

pip install protobuf 
+0

謝謝!它似乎工作......出於某種原因,我可以從像Cygwin這樣的命令提示符運行我的Python程序,但從默認的空閒編輯器啓動時仍然會出現導入錯誤。 – user2399973

+0

@ user2399973:我的猜測是,您實際上已經安裝了兩個Python安裝 - 可能是一個cygwin Python和一個本地win32 Python。您已經將protobuf正確安裝到了cygwin Python中,因此它可以在命令行運行cygwin Python時使用,但是您尚未將它安裝到本機Python中,所以在運行本機Python的IDLE時它不起作用。但是,真的,這只是一個猜測。發佈一個_new問題_,描述您的設置,顯示實際的錯誤信息(如有),而不是僅僅描述它等。 – abarnert