如何使用Ruby rspec测试Python代码?

如何使用Ruby rspec测试Python代码?,第1张

概述我尝试用以下方法测试 ruby python: bundle exec irbrequire 'rubypython'RubyPython.start 这导致了错误. 错误消息是: Python-2.7.5 python --versionPython 2.7.6➜ Python-2.7.5 cd ..➜ code lsdesign Gemfile Gemfile.loc 我尝试用以下方法测试 ruby python:

bundle exec irbrequire 'rubypython'RubyPython.start

这导致了错误.

错误消息是:

Python-2.7.5  python --versionPython 2.7.6➜  Python-2.7.5  cd ..➜  code  lsdesign  Gemfile  Gemfile.lock  Python-2.7.5  Python-2.7.5.tgz  ratelimit_spec.rb➜  code  bundle exec irbirb(main):001:0> require 'rubypython'=> trueirb(main):002:0> RubyPython.startRubyPython::InvalIDInterpreter: An invalID interpreter was specifIEd.

已经安装了Python 2.7:

IRB(主):002:0> RubyPython.start(:python_exec =>’python2.7′)
RubyPython :: InvalIDInterpreter:指定了无效的解释器.
    来自/home/nitrous/code/.bundle/gems/rubypython-0.6.3/lib/rubypython.rb:67:in,clock in start’
    来自/home/nitrous/code/.bundle/gems/rubypython-0.6.3/lib/rubypython/python.rb:10:in`synchronize’
    来自/home/nitrous/code/.bundle/gems/rubypython-0.6.3/lib/rubypython/python.rb:10:in`synchronize’
    来自/home/nitrous/code/.bundle/gems/rubypython-0.6.3/lib/rubypython.rb:54:in’start’
    来自(irb):2
    来自/usr/local/opt/rbenv/versions/2.1.5/bin/irb:11:in`< main>‘

文档建议我能够运行使用Ruby导入的Python,在我的例子中,通过Rspec进行测试,但事实并非如此.

我是否应该能够从Ruby中导入然后运行Python?

解决方法 在最近的Debian构建中使用RubyPython时,我遇到过几次这个问题.

问题在于RubyPython :: Interpreter#find_python_lib方法.此方法使用硬编码路径和OS检测来查找库,而不是调用python-config.

我使用以下代码来修复该方法:

require "rubypython"class RubyPython::Interpreter  alias :find_python_lib_orig :find_python_lib  def find_python_lib    @libbase = "#{::FFI::Platform::liBPREFIX}#{@version_name}"    @libext = ::FFI::Platform::liBSUFFIX    @libname = "#{@libbase}.#{@libext}"    # python-config --confdir provIDes location of .so    config_util = "#{version_name}-config"    confdir = %x(#{config_util} --configdir).chomp    library = file.join(confdir,@libname)    if (file.exist? library)      @locations = [ library ]    else      library = find_python_lib_orig    end    library  endendRubyPython.start(:python_exe => "/usr/bin/python2.7")

如果pythonconfig无法找到库,则会调用原始(有缺陷的)方法.

总结

以上是内存溢出为你收集整理的如何使用Ruby rspec测试Python代码?全部内容,希望文章能够帮你解决如何使用Ruby rspec测试Python代码?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271186.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存