Existe-t-il un pont Ruby to Python facile à utiliser? Ou suis-je mieux d'utiliser system()?Comment appeler du code Python depuis Ruby?
Répondre
Je ne pense pas qu'il y ait moyen d'invoquer Python à partir de Ruby sans forcer un processus, via system() ou quelque chose comme ça. Les temps d'exécution de la langue sont complètement différents, ils devraient être dans des processus séparés de toute façon.
appelle les processus via le module de sous-processus. système() manque beaucoup, tuons la bête. – nosklo
Vous pouvez essayer Masaki Fukushima's library pour incorporer python dans ruby, bien qu'il ne semble pas être maintenu. YMMV
Avec cette bibliothèque, les scripts Ruby peuvent appeler directement des modules Python arbitraires. Les modules d'extension et les modules écrits en Python peuvent être utilisés.
Le plaisamment nommé Unholy de l'ingénieux Pourquoi le Lucky Stiff pourrait aussi être utile:
Compile Ruby à Python bytecode.
Et, en outre, que traduire
bytecode retour au code source Python à l'aide Decompyle (inclus).Ruby 1.9 et Exige Python 2.5.
Nice. N'avait pas entendu parler d'impie avant. –
Pour que le code Python s'exécute, l'interpréteur doit être lancé en tant que processus. Donc, system() est votre meilleure option. Pour appeler le code python, vous pouvez utiliser des sockets RPC ou réseau, pour la chose la plus simple qui pourrait éventuellement fonctionner.
Super, c'est ce que j'ai l'intention de faire. Ne voyez pas de raison d'être plus chic que d'utiliser system() seul. – Eric
Je ne pense pas que ce soit vrai du tout: voir http://docs.python.org/extending/embedding.html pour la documentation de l'intégration de l'interpréteur Python dans une autre application. Ce qui, pour le pervers, pourrait être l'interprète Ruby. –
gem install rubypython
Si vous voulez utiliser le code Python comme votre script Python est une fonction, essayez IO.popen.
Si vous vouliez inverser chaque chaîne d'un tableau en utilisant le script python "reverse.py", votre code ruby serait le suivant.
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
Ensuite, votre script python ressemblerait à quelque chose comme ça
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
Sortie: olleh YM iman si ymmij
L'auteur cherche à invoquer le code python de ruby, pas le code ruby de python. –
- 1. Comment appeler JQuery depuis l'extérieur du bloc JQuery
- 2. Comment écrire du code d'imprimante brute sur un partage d'imprimante Windows depuis ruby?
- 3. Comment appeler une procédure stockée depuis iReport?
- 4. Appeler Snarl à partir du code java
- 5. débogage du code Python
- 6. Peut-on appeler TWinControl.Update depuis TGraphicControl.Paint?
- 7. Comment convertir/appeler un projet C++ vers/depuis .Net?
- 8. Ruby to Python bridge
- 9. Appelez le script python depuis l'application AIR?
- 10. appeler une fonction VB.net depuis javascript
- 11. Comment appeler Foo (long [] []) (C#) depuis Managed C++ (ancienne syntaxe)?
- 12. Comment appeler une fonction côté serveur depuis javascript?
- 13. Traitement XSLT dans/depuis ruby
- 14. asp.net mvc webservice, comment appeler depuis l'application widowsforms?
- 15. Comment appeler un ASHX depuis une fonction ASPX.VB?
- 16. Importer une classe Model/Lib et appeler depuis le contrôleur
- 17. Interpréteur en ligne Python à utiliser * depuis * l'iPhone?
- 18. Générer un code depuis Emacs
- 19. comment appeler le code de gestionnaire d'événements de code javascript
- 20. python _ + django, est-ce du code compilé?
- 21. Création d'un seul fichier exe à partir du code Python
- 22. Comment appeler un programme externe en python et récupérer le code de sortie et de retour?
- 23. Comment savoir si je cours depuis JRuby contre Ruby?
- 24. Comment définir sys.excepthook pour appeler globalement pdb en python?
- 25. Iron Python/Iron Ruby EXE
- 26. Comment appeler le code système à partir de JScript/VBScript?
- 27. Comment refactoriser ce code Ruby (controller)?
- 28. Comment SECHER cet extrait de code Ruby?
- 29. Appeler un programme externe de python
- 30. Accéder aux applications Mac depuis Ruby ou PHP ou Cocoa
j'ai posé une question similaire ici plus tôt; peut-être que les réponses seraient utiles: http://stackoverflow.com/questions/2413878/would-it-be-possible-to-integrate-python-or-perl-with-ruby. – Yktula