【问题标题】:ZeroRPC and IronPythonZeroRPC 和 IronPython
【发布时间】:2014-12-30 09:59:58
【问题描述】:

我真的很想在我使用 IronPython 的项目中使用出色的 zerorpc,但它似乎不受支持。

我已尝试下载zerorpc 的源代码并运行

"C:\Program Files (x86)\IronPython 2.7\ipy.exe" setup.py install

但我一路上看到了这一点:

warning: build_py: byte-compiling is disabled, skipping.

这与答案并不矛盾:Fast and scalable RPC between C# and CPython

我的问题:

  1. 是否可以让 zerorpc 与 IronPython 一起运行,如果可以,请告诉我如何操作?
  2. 如果没有,那么是否有任何其他等效包可以提供 IronPython 中的功能?这里有一个列表:What is the current choice for doing RPC in Python?,但有谁知道这些是否适用于 IronPython?

更新 2 根据@PawelJasinski 的建议和他对 pyzmq ironpython-backend 的更新,我尝试了以下方法:

  1. 已安装 IronPython 2.7.5b2 或更高版本
  2. http://zeromq.org/distro:microsoft-windows 安装了 32 位版本的 zeromq
  3. https://github.com/paweljasinski/pyzmq/tree/ironpython-backend 克隆ironpython-backend 分支
  4. pyzmq 目录中,运行ipy.exe setup.py install --user
  5. https://github.com/dotcloud/zerorpc-python克隆zerorpc
  6. zerorpc-python 中,运行ipy.exe setup.py install --user
  7. 设置环境变量:set PYZMQ_BACKEND=zmq.backend.ctypes
  8. 尝试使用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

【问题讨论】:

  • 您需要安装与用于编译您的 python 版本相同的 Visual Studio 版本。应该是 2008 年,但我可能错了。
  • @Puciek 谢谢,我会检查我的设置,看看是否有帮助。

标签: python ironpython rpc zeromq


【解决方案1】:

对于问题的第二部分。 pyro(及其依赖项 serpent)支持 IronPython 和 Jython。

警告:远离 IronPython 2.7.5b3 - 它有一个 bug 会破坏蛇。 2.7.4 和 2.7.5b2 都可以。下一个 2.7.5 有一个修复。

【讨论】:

    【解决方案2】:

    ZeroRPC 看起来是纯 python 并且基于 pyzmq。在这种情况下,您可以尝试使用 IronPython 的 pyzmq ctypes 后端。 https://github.com/paweljasinski/pyzmq/tree/ironpython-backend

    • 使用 IronPython 2.7.5b2 或更新版本
    • http://zeromq.org/distro:microsoft-windows 安装 32 位版本的 zmq
    • 安装pyzmq本身,克隆,而不是ipy.exe setup.py install --user。安装应该检测您的 zmq 并选择正确的 dll
    • 激活ctypes后端,设置环境变量PYZMQ_BACKEND=zmq.backend.ctypes

    更新:ZeroRPC 对 gevent 的依赖在 IronPython 下不可用,因此上述说明仅对 IronPython 下的 pyzmq 有效

    【讨论】:

    • 谢谢 - 我已经更新了问题,但我认为您的回答仍然相关。我会试一试。 @PawelJasinski
    • 我已经用我最近一次尝试的日志更新了我的问题。看起来我需要 Visual Studio 6。
    • 某些东西让安装程序相信它是 cpython 而不是 Ironpython。
    • @CaptainWhippet 请切换到 Iron-cleanup 分支。对不起,我的错。
    • @CaptainWhippet ironpython-backend 分支现在应该有一个工作 setup.py
    猜你喜欢
    • 2019-09-22
    • 2019-02-07
    • 1970-01-01
    • 2010-09-05
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多