试着运行 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失败,参考 http://www.oschina.net/question/1409342_134600

先编译 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%
参考:http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat

最后进入 examples\python,先 generate_protos.gy 生成消息和接口,然后运行 server, client.
运行时需要 libzmq.dll, rpcz.dll.

如何运行 rpcz python example的更多相关文章

  1. python如何通过windows命令行运行一个python程序文件?

    python如何通过windows命令行运行一个python程序文件? cmd 进入到py文件对应目录下或者直接在上面的文件地址栏输入cmd,敲入回车 定位到对应的目录下 输入python xxx.p ...

  2. Python 检查当前运行的python版本 python2 python3

    检查当前运行的python版本,可以帮助程序选择运行python2还是python3的代码 import sys if sys.version > '3': PY3 = True else: P ...

  3. 基于Django的独立运行的python脚本开发

    Django框架很方便,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,django sys.path.append(os.path ...

  4. 解决Windows Server 2012 R2 Datacenter云服务器无法运行opencv python程序的问题

    写了个基于opencv的python程序,pyinstaller 32位机打包后在win7/win10 32/64正常运行,在Windows Server 2012 R2 Datacenter云服务器 ...

  5. 使用PyCharm创建并运行一个Python项目

    (1)首先,在欢迎界面点击“Create New Project”: (2)在“New Project“左侧面板点击”Pure Python“,右侧Location选择自己要创建项目的路径(一般情况, ...

  6. python的re模块一些方法 && Tkinter图形界面设计 && 终止python运行函数 && python读写文件 && python一旦给字符串赋值就不能单独改变某个字符,除非重新给变量赋值

    Tkinter图形界面设计见:https://www.cnblogs.com/pywjh/p/9527828.html#radiobutton 终止python运行函数: 采用sys.exit(0)正 ...

  7. 查看当前正在运行的python进程

    ps -ef |grep Python kill -9 pid  

  8. Notepad++一键编译运行(Python、Java、C++)

    Python 需要事先安装Python配置好环境变量.建议使用Anaconda,方便. 在Notepad按F5,输入如下 cmd /k chdir /d $(CURRENT_DIRECTORY) &a ...

  9. python os.startfile python实现双击运行程序 python监控windows程序 监控进程不在时重新启动

    用python监控您的window服务 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://world77.blog.51cto.co ...

随机推荐

  1. MySQL LIKE 子句

    MySQL LIKE 子句 我们知道在MySQL中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录. WHERE 子句中可以使用 ...

  2. Docker常见仓库CentOS

    CentOS 基本信息 CentOS 是流行的 Linux 发行版,其软件包大多跟 RedHat 系列保持一致. 该仓库提供了 CentOS 从 5 ~ 7 各个版本的镜像. 使用方法 默认会启动一个 ...

  3. 状态模式、职责链模式——省去if-else的繁琐结构

    小时候写日记都是这么写的:上午七点起床,八点之前洗脸刷牙吃早饭,十二点之前好好上课,中午一点,吃午饭,下午两点到六点,上课,下课,找请假,明天妈妈要带我去姥姥家,九点之前,看动画片,九点钟,收拾去姥姥 ...

  4. 两行代码搞定Android视图扩散切换效果

    用最简单的方式来实现Android视图扩散切换效果. 一.概述 这两天时间动手撸了个视图扩散切换效果的控制器,API兼容至Android4.0,更方便我们在视图切换过程中有炫酷的过渡效果.本来是想实现 ...

  5. Retrofit2.0+RxJava+Dragger2实现不一样的Android网络架构搭建

    Tamic :csdn http://blog.csdn.net/sk719887916 众所周知,手机APP的核心就在于调用后台接口,展示相关信息,方便我们在手机上就能和外界交互.所以APP中网络框 ...

  6. ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation

    ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation 书中,大部分出现hydro的地方,直接替换为indigo或jade或kinetic,即可在对应版本中 ...

  7. ListView下拉刷新上拉加载更多实现

    这篇文章将带大家了解listview下拉刷新和上拉加载更多的实现过程,先看效果(注:图片中listview中的阴影可以加上属性android:fadingEdge="none"去掉 ...

  8. DJango内建模板转向jinja2的小脚本

    import re,os def org(path=os.getcwd(),fs=None,preview=True): fs = fs or [] for root,dirs,files in os ...

  9. Android动态换肤(二、apk免安装插件方式)

    在上一篇文章Android动态换肤(一.应用内置多套皮肤)中,我们了解到,动态换肤无非就是调用view的setBackgroundResource(R.drawable.id)等方法设置控件的背景或者 ...

  10. Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别

    IO流 IO流用来处理设备之间的数据传输 java对数据的操作是过流的方式 流按操作数据分为两种:字节流与字符流 流按流向分为:输入流,输出流. IO流常用基类 字节流的抽象基类:InputStrea ...