ZeroRPC与IronPython
我真的很想在我的项目中使用很棒的 zerorpc,这个项目是用IronPython做的,但它似乎不支持这个。
我尝试下载了 zerorpc
的源代码压缩包,然后运行了
"C:\Program Files (x86)\IronPython 2.7\ipy.exe" setup.py install
但是在这个过程中我遇到了以下问题:
warning: build_py: byte-compiling is disabled, skipping.
这并不与这个回答相矛盾: C#和CPython之间快速且可扩展的RPC。
我有几个问题:
- 能否让zerorpc在IronPython上运行,如果可以的话,能给我一点提示吗?
- 如果不行,那有没有其他类似的包可以在IronPython中提供相同的功能?这里有一个列表: 目前在Python中做RPC的选择是什么?,但有没有人知道这些包中有没有适用于IronPython的?
更新 2
根据@PawelJasinski的建议和他对pyzmq ironpython-backend的更新,我尝试了以下步骤:
- 安装IronPython 2.7.5b2或更高版本
- 从 http://zeromq.org/distro:microsoft-windows 安装32位版本的zeromq
- 从 https://github.com/paweljasinski/pyzmq/tree/ironpython-backend 克隆
ironpython-backend
分支 - 在
pyzmq
目录中,运行ipy.exe setup.py install --user
- 从 https://github.com/dotcloud/zerorpc-python 克隆zerorpc
- 在
zerorpc-python
中,运行ipy.exe setup.py install --user
- 设置环境变量:
set PYZMQ_BACKEND=zmq.backend.ctypes
- 尝试使用来自 https://github.com/dotcloud/zerorpc-python 的 'Cooler' 类示例,运行
ipy.exe -X:Frames cooler.py
(cooler.py):
class Cooler(object):
""" Various convenience methods to make things cooler. """
def add_man(self, sentence):
""" End a sentence with ", man!" to make it sound cooler, and
return the result. """
return sentence + ", man!"
def add_42(self, n):
""" Add 42 to an integer argument to make it cooler, and return the
result. """
return n + 42
def boat(self, sentence):
""" Replace a sentence with "I'm on a boat!", and return that,
because it's cooler. """
return "I'm on a boat!"
import zerorpc
s = zerorpc.Server(Cooler())
s.bind("tcp://0.0.0.0:4242")
s.run()
现在我看到这个错误:
Traceback (most recent call last):
File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\select.py", line 26, in select_backend
File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\ctypes\__init__.py", line 26, in <module>
File "C:\Users\nlindop\AppData\Roaming\Python\IronPython27\site-packages\zmq\backend\ctypes\constants.py", line 16, in <module>
ImportError: No module named ZMQ
2 个回答
2
ZeroRPC看起来是纯Python写的,并且是基于pyzmq这个库的。如果你想在IronPython上使用,可以尝试pyzmq的ctypes
后端。你可以在这里找到相关的代码:https://github.com/paweljasinski/pyzmq/tree/ironpython-backend
- 使用IronPython 2.7.5b2或更新版本
- 从这个网站安装32位版本的zmq:http://zeromq.org/distro:microsoft-windows
- 安装pyzmq本身,先克隆代码,然后运行
ipy.exe setup.py install --user
。安装时会自动检测你的zmq并选择合适的dll文件 - 激活ctypes后端,设置环境变量
PYZMQ_BACKEND=zmq.backend.ctypes
更新:ZeroRPC依赖于gevent
,而这个在IronPython下是不可用的,所以上面的步骤仅适用于IronPython下的pyzmq。