我想使用RubyPython模塊(https://github.com/halostatue/rubypython)從Ruby腳本中執行Python代碼。我已經正確設置了模塊,但是我很困惑如何使用它。用RubyPython執行任意代碼塊的Python代碼
如果我有文字的Python代碼塊,說:
def multiply(x, y):
return x * y * y
z = multiply(x, y)
我怎麼能這樣傳遞給Python和「X」和「Y」在Ruby中動態定義的執行,並那麼能夠檢索'z'的值?根據註釋請求
編輯 到目前爲止,這個工作和對我來說很有意義:
RubyPython.start(python_exe: "/usr/bin/python2.6")
cPickle = RubyPython.import("cPickle")
p cPickle.dumps("Testing RubyPython.").rubify
RubyPython.stop # stop the Python interpreter
這給了我的"S'Testing RubyPython.'\n."
輸出,並且我可以運行像這樣很簡單的命令:
RubyPython.start(python_exe: "/usr/bin/python2.6")
x = 3
y = x * x * x
print "y = %d" % y
RubyPython.stop # stop the Python interpreter
這給了我一個輸出"y = 27"
,作爲預期。
但是,一旦我嘗試定義在蟒蛇的方法,我只是得到了一系列的錯誤:
RubyPython.start(python_exe: "/usr/bin/python2.6")
def my_multiply(x, y):
return x * y * y
z = my_multiply(2, 3)
print "z = %d" % z
RubyPython.stop # stop the Python interpreter
我得到syntax error, unexpected ':'
因此,如何將使用此模塊我執行的Python代碼此塊?更重要的是,我如何將Ruby中的值傳遞給正在執行的Python代碼?
當你按照https://github.com/halostatue/rubypython(提要,基本用法,特定Python版本等)的建議時,你可以顯示_你做了什麼嗎?其中有不少例子應該引導你朝着正確的方向發展。 – boardrider
僅僅是我,還是你在Ruby解釋器期待Ruby代碼的地方輸入Python代碼。你的錯誤「語法錯誤,未知」:'「似乎同意我的基礎。我沒有看到RubyPython以這種方式工作的任何示例 - 您應該將其作爲字符串並以某種方式將其傳遞給RubyPython。 **編輯**您列出的第一個示例(您使用Python格式樣式進行打印的位置)完全有效且合法的Ruby - 因此它可以工作。在第二個例子中':'不合適,Ruby解釋器抱怨。 –
布蘭登 - 我的假設和你的一樣。我只是不知道如何將該代碼作爲字符串傳遞給RubyPython--這是我的問題的癥結所在! – Bryce