¿Existe un puente Ruby to Python fácil de usar? ¿O es mejor que use el sistema()?¿Cómo invoco el código Python de Ruby?
Respuesta
No creo que haya ninguna manera de invocar Python desde Ruby sin bifurcar un proceso, a través del sistema() o algo así. Los tiempos de ejecución del lenguaje son completamente diferentes, de todos modos necesitarían estar en procesos separados.
invocar procesos a través del módulo de subproceso. sistema() carece de mucho, vamos a matar a la bestia. – nosklo
Puede intentar Masaki Fukushima's library para incrustar python en ruby, aunque no parece mantenerse. YMMV
Con esta biblioteca, las secuencias de comandos de Ruby pueden llamar directamente a los módulos arbitrarios de Python. Se pueden usar módulos de extensión y módulos escritos en Python.
El divertidamente nombrado Unholy de la ingeniosa Por qué el Lucky Stiff también podría ser de utilidad:
Compilar Ruby a Python bytecode.
Y, además, traducir que
bytecode de nuevo a Python código fuente usando Decompyle (incluidos.)Requiere Ruby 1.9 y Python 2.5.
Agradable. No había oído hablar de profano antes. –
Para que el código python se ejecute, el intérprete debe iniciarse como un proceso. Entonces el sistema() es tu mejor opción.
Para llamar al código python puede usar RPC o sockets de red, por la cosa más simple que podría funcionar.
Genial, eso es lo que pretendo hacer. No veo ningún motivo para ser más elegante que usar el sistema() solo. – Eric
No creo que sea cierto en absoluto: consulte http://docs.python.org/extending/embedding.html para ver la documentación de incrustación del intérprete de Python en otra aplicación. Lo cual, para el perverso, podría ser el intérprete de Ruby. –
joya instalar rubypython
Si desea utilizar el código Python como su secuencia de comandos de Python es una función, tratar IO.popen.
Si desea invertir cada cadena en una matriz utilizando la secuencia de comandos python "reverse.py", su código ruby sería el siguiente.
strings = ["hello", "my", "name", "is", "jimmy"]
#IO.popen: 1st arg is exactly what you would type into the command line to execute your python script.
#(You can do this for non-python scripts as well.)
pythonPortal = IO.popen("python reverse.py", "w+")
pythonPortal.puts strings #anything you puts will be available to your python script from stdin
pythonPortal.close_write
reversed = []
temp = pythonPortal.gets #everything your python script writes to stdout (usually using 'print') will be available using gets
while temp!= nil
reversed<<temp
temp = pythonPortal.gets
end
puts reversed
A continuación, la secuencia de comandos de Python se vería algo como esto
import sys
def reverse(str):
return str[::-1]
temp = sys.stdin.readlines() #Everything your ruby programs "puts" is available to python through stdin
for item in temp:
print reverse(item[:-1]) #Everything your python script "prints" to stdout is available to the ruby script through .gets
#[:-1] to not include the newline at the end, puts "hello" passes "hello\n" to the python script
Salida: olleh ym eman si ymmij
El autor está buscando invocar el código python de ruby, no el código ruby de python. –
- 1. ¿Cómo se documenta el código de Ruby?
- 2. Cómo invoco dinámicamente el método de un objeto de JavaScript
- 3. cómo almacenar el código Ruby bloques
- 4. Cómo invoco el diálogo de búsqueda utilizando onSearchRequested()
- 5. ¿Cómo invoco manualmente una Acción en Swing?
- 6. ¿Trazar el código en Ruby?
- 7. Formatear el código de Ruby en Vim
- 8. ¿Cómo invoco un constructor estático con reflejo?
- 9. ¿Cómo invoco la versión de eliminación de nothrow?
- 10. cómo convertir el código de Python 3 a Python 2?
- 11. ¿Incrustar el código de Ruby en HTML?
- 12. Ejecutando el código de ruby desde vim
- 13. cómo poner las afirmaciones de código Ruby
- 14. Cómo documentar el código de Ruby usando Doxygen?
- 15. ¿Cómo se escribe/serializa el código de Ruby?
- 16. ¿Cómo ejecutar el código de Ruby desde la terminal?
- 17. ¿Cómo convertir el código de Ruby 1.9.2 a JavaScript?
- 18. Cómo analizar el código (en Python)?
- 19. Cómo subir Suds.WebFault desde el código python?
- 20. ¿Cómo invoco los métodos en un dll C# desde mi código C?
- 21. Cómo evaluar el código Javascript en Python
- 22. ¿Usando el código de Ruby/Python en una aplicación de iPhone OS?
- 23. ¿Cómo llamas al código Python desde el código C?
- 24. Ruby to Python bridge
- 25. Cómo optimizar el código Python (de ThinkPython, el ejercicio 10.10)
- 26. Bloques de código en python
- 27. ¿Cómo invoco dinámicamente un método de clase en PHP?
- 28. ¿Cómo invoco una macro make de GNU creada usando define?
- 29. Analizando Javascript usando el código Ruby
- 30. ¿Cómo puedo perfilar el código Ruby en 1.9.2?
hice una pregunta similar aquí anteriormente; quizás las respuestas serían de alguna ayuda: http://stackoverflow.com/questions/2413878/would-it-be-possible-to-integrate-python-or-perl-with-ruby. – Yktula