如何執行 rpcz python example

2021-06-19 15:49:50 字數 2085 閱讀 9762

試著執行 rpcz-python 的 example。過程記錄如下。

假設protobuf-py已經按照protobuf的安裝說明安裝了。

發現 protobuf-2.5.0版的python包是python2的,沒有找到python3的。

試著2to3.py轉換一下,結果轉換後無法安裝。

只好將python3.3換成python2.7

python2.7的mimetypes.py有錯誤,登錄檔中hkey_classes_root有中文的副檔名時,

安裝setuptools失敗,參考

先編譯 rpz, 將生成的

protoc-gen-cpp_rpcz.exe

protoc-gen-python_rpcz.exe

複製到系統搜尋目錄,如與protoc.exe放在一起。

進入 rpcz 的 python 目錄,執行

python setup.py install

出現如下的各種錯誤:

../include\rpcz/connection_manager.hpp(21) : fatal error c1083: cannot open incl

ude file: 'boost/function.hpp': no such file or directory

../include\rpcz/macros.hpp(20) : fatal error c1083: cannot open include file: 'g

oogle/protobuf/stubs/common.h': no such file or directory

../include\rpcz/rpc.hpp(24) : fatal error c1083: cannot open include file: 'rpcz

/rpcz.pb.h': no such file or directory

link : fatal error lnk1181: cannot open input file 'rpcz.lib'

link : fatal error lnk1104: cannot open file 'libboost_thread-vc100-mt-1_54.lib'

直接改了setup.py如下。

ext_modules=[

extension("rpcz.pywraprpcz", ["cython/pywraprpcz.cpp"],

libraries=["rpcz", "libprotobuf", "libzmq"],

include_dirs=['../include', '../build/src',

'd:/boost/include/boost-1_54',

'g:/workspace/rpcz_jinq/src',

'd:/libsrc/protobuf-2.5.0/vsprojects/include'],

library_dirs=['../build/deps/lib', '../build/src/rpcz',

'd:/boost/lib',

'g:/workspace/rpcz_jinq/src/rpcz/release',

'd:/libsrc/zeromq-4.0.3/builds/msvc/release',

'd:/libsrc/protobuf-2.5.0/vsprojects/release'],

language='c++')

],不知道如何做成通用的指令碼。

rpcz原來應該是建立乙個固定位置的build目錄,其中有deps目錄,包含所有庫。

這就要求cmake的構建目錄固定為build.

python2.7是用vc2008編譯的,用vc2010編譯python擴充套件會有問題。

會報錯:

error: unable to find vcvarsall.bat

強制使用vc2010:

set vs90comntools=%vs100comntools%

參考:最後進入 examples\python,先 generate_protos.gy 生成訊息和介面,然後執行 server, client.

執行時需要 libzmq.dll, rpcz.dll.

hello, world 如何執行

15 may 2014 s 20perpective 2014 05 15 gcc 以經典的 hello,world 為例,分析編譯的各個階段。begin hello include int main end hello 彙編階段。將上一步生成的彙編 通過彙編器編譯成目標檔案.o。gcc c hel...

如何執行TinyX

如何執行tinyx 編譯了乙個tinyx。重起linux,並指定核心起動引數為vga 788。執行 xfbdev.出現錯誤 xservtranssocketopencotsserver unable to open socket for inet6 xservtransopen transport ...

如何執行HQL?

hibernate通過query介面執行hql語句,如 query query session.createquery fromcustomer iterator it query.list iterator while it.hasnext 事實上,可以換成 iterator it query.i...