2015-04-01 76 views
2

我已經在Python 3.4中安裝了protobuf,並且我將已編譯的代碼pb_x_pb2.py推送到python34文件夾中。當我輸入import pb_x_pb2.py時,它顯示以下錯誤。我們如何在Python代碼中使用Python生成的protobuf代碼?

>>> import pb_interface_pb2 
Traceback (most recent call last): 
    File "<pyshell#21>", line 1, in <module> 
    import pb_interface_pb2 
    File "C:\Python34\pb_interface_pb2.py", line 5, in <module> 
    from google.protobuf import reflection 
    File "C:\Python34\lib\site-packages\google\protobuf\reflection.py", line 68, in <module> 
    from google.protobuf.internal import python_message 
    File "C:\Python34\lib\site-packages\google\protobuf\internal\python_message.py", line 848 
    except struct.error, e: 
        ^
SyntaxError: invalid syntax 
+0

你爲Python 3編譯過嗎?語法看起來像Python 2. – 2015-04-01 11:40:56

+0

哦!這意味着我只能使用Python 2.7? – raghu 2015-04-01 11:44:56

+0

Protobuffer應該在3.x下支持。但是,如果您爲Python 2.x編譯,結果將僅在2.x下運行。你是如何將Protobuffer文件編譯爲Python的? – 2015-04-01 11:46:26

回答

2

Protobuf並不真正支持python 3.x.對於導入的庫,請嘗試使用pip install protobuf-py3,該包是一個python 3端口。您也可以從生成的文件的Pythonxx\Tools\Scripts文件夾運行2to3.py腳本。

另一種選擇是下載最新版本的源代碼,並自己編譯它們。我相信最新的版本大多與2.x和3.x兼容。

+0

我已經嘗試在python2.7版本本身,但仍面臨同樣的問題。我使用'pip安裝protobuf'安裝protobuf。但是當我在空閒時輸入「protobuf」時,它會顯示導入錯誤,表示沒有可用的模塊。要使用該編譯的Python protobuf代碼,我相信應該導入protobuf。你能否清楚地告訴步驟使用protobuf代碼,因爲Iam new在這裏我無法關注你。 – raghu 2015-04-01 13:38:07

+0

聽起來好像您沒有使用與您安裝的位置相同的安裝中的空閒位置。你有多個版本的Python安裝? – horns 2015-04-01 14:36:15