从Ruby调用Python – PyPy兼容性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了从Ruby调用Python – PyPy兼容性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2361字,纯文字阅读大概需要4分钟。
内容图文
我想从Ruby调用Python代码.有一些现有工具可以做到这一点,本网站上的一些问题推荐http://rubypython.rubyforge.org/,它通过在Ruby中嵌入Python解释器来工作.我正在开发一个使用Python独有的库的应用程序(即图形工具,我有理由使用它,比如说RGL),但是最终的项目是在Rails中,因此使用Ruby代码进行控制工作将是理想的.我希望它快速,所以我使用PyPy.有没有办法让PyPy解释器嵌入Ruby代码中,或者让rubypython中的Python解释器运行PyPy?
解决方法:
不,好吧,不是没有很多工作.
首先,RubyPython并不真正包含嵌入式Python解释器;它只是在运行时包装解释器.如the docs所示,您可以使用任何您想要的Python运行它,例如:
>> RubyPython.start(:python_exe => "python2.6")
那么,当你尝试时会发生什么?
>> RubyPython.start(:python_exe => "/usr/local/bin/pypy")
RubyPython::InvalidInterpreter: An invalid interpreter was specified.
from /Library/Ruby/Gems/1.8/gems/rubypython-0.6.3/lib/rubypython.rb:67:in `start'
from /Library/Ruby/Gems/1.8/gems/rubypython-0.6.3/lib/rubypython/python.rb:10:in `synchronize'
from /Library/Ruby/Gems/1.8/gems/rubypython-0.6.3/lib/rubypython/python.rb:10:in `synchronize'
from /Library/Ruby/Gems/1.8/gems/rubypython-0.6.3/lib/rubypython.rb:54:in `start'
from (irb):4
不幸的是,它需要CPython 2.4-2.7.它不适用于CPython 3.x,PyPy,Jython等.再次,从文档:
RubyPython has been tested with the C-based Python interpreter (cpython), versions 2.4 through 2.7. Work is planned to enable Python 3 support, but has not yet been started. If you’re interested in helping us enable Python 3 support, please let us know.
没有看代码,我猜测rubypython正在使用rubyffi:
*包装CPython嵌入API,或
*通过其dll / so / dylib导出直接调用CPython VM内部.
如果它是前者,该项目可能是可行的,但仍然需要做很多工作. PyPy不支持CPython的嵌入API.如果它有自己的嵌入式API,您可能会重写rubypython的较低级别来包装它们,并保留更高级别的代码.但是嵌入PyPy仍然是一项正在进行中的工作,(6个月前的状态见http://mail.python.org/pipermail/pypy-dev/2012-March/009661.html.)所以,你需要先帮助PyPy嵌入准备好黄金时段并保持稳定,然后移植到较低级别rubypython使用不同的API.
如果是后者,你就是SOL. PyPy永远不会支持CPython内部,CPython内部的大部分内容实际上是用RPython或Python编写的,然后为PyPy编译,所以原则上它甚至都不可能.您必须彻底重写所有rubypython以找到使其工作的方法,而不是仅仅移植较低级别.
另一种方法是将Ruby移植到RPython并使用PyPy构建一个Ruby解释器和一个可以在更高层次上相互通信的Python解释器.然后,为PyRuby和PyPy写一些类似rubypython的东西将是微不足道的.但是,第一步是愚蠢的.
内容总结
以上是互联网集市为您收集整理的从Ruby调用Python – PyPy兼容性全部内容,希望文章能够帮你解决从Ruby调用Python – PyPy兼容性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。