J'ai trouvé une bibliothèque capable d'intégrer Python dans Common Lisp appelée batteries-effrénées, alors je l'ai essayée. C'est le mémorandum.
python
$ ros --version
roswell 17.5.8.78
$ ros run -- --version
SBCL 1.3.18
$ python --version
Python 2.7.13
L'installation des «batteries cambriolées» est facile à partir de Roswell.
$ ros install burgled-batteries
Appelons la fonction à partir du module suivant.
hello.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def hello(name):
print "Hi, {}! This is Python.".format(name)
Ce qui suit est le REPL SBCL.
Exécuter des fonctions Python à partir de CL
* (ql:quickload :burgled-batteries)
To load "burgled-batteries":
Load 1 ASDF system:
burgled-batteries
; Loading "burgled-batteries"
...
(:BURGLED-BATTERIES)
* (in-package :burgled-batteries)
* (startup-python) ;;Lancer l'interpréteur Python
* (import "sys") ;;Importer le module sys
0
* (run "sys.path.append('./')") ;;Ajouter car le répertoire actuel n'est pas recherché pour une raison quelconque lors de l'importation
;;run exécute la chaîne incorporée dans l'interpréteur actuel
* (import "hello") ;;Importer le module bonjour
* (run "hello.hello('Kojiro')") ;; hello.Appelle bonjour
Hi, Kojiro! This is Python.
Non seulement il peut être intégré, mais il peut également être défini et appelé en tant que fonction.
Définir et appeler des fonctions Python dans CL
* (defpyfun "hello.hello" (name)) ;; hello.bonjour de py bonjour.Défini comme bonjour
HELLO.HELLO
* (hello.hello "Kojiro") ;;Peut être appelé normalement
Hi, Kojiro! This is Python.
Recommended Posts