Ich habe eine Bibliothek gefunden, die Python in Common Lisp einbetten kann, eingebrochene Batterien, also habe ich es versucht. Es ist das Memorandum.
python
$ ros --version
roswell 17.5.8.78
$ ros run -- --version
SBCL 1.3.18
$ python --version
Python 2.7.13
Die Installation von "eingebrochenen Batterien" ist von Roswell aus einfach.
$ ros install burgled-batteries
Rufen wir die Funktion aus dem folgenden Modul auf.
hello.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def hello(name):
print "Hi, {}! This is Python.".format(name)
Das Folgende ist die SBCL REPL.
Führen Sie Python-Funktionen von CL aus
* (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) ;;Starten Sie den Python-Interpreter
* (import "sys") ;;Sys-Modul importieren
0
* (run "sys.path.append('./')") ;;Hinzugefügt, da beim Importieren aus irgendeinem Grund das aktuelle Verzeichnis nicht durchsucht wird
;;run führt die eingebettete Zeichenfolge im aktuellen Interpreter aus
* (import "hello") ;;Hallo Modul importieren
* (run "hello.hello('Kojiro')") ;; hello.Ruf hallo an
Hi, Kojiro! This is Python.
Es kann nicht nur eingebettet, sondern auch als Funktion definiert und aufgerufen werden.
Definieren und rufen Sie Python-Funktionen in CL auf
* (defpyfun "hello.hello" (name)) ;; hello.hallo von py hallo.Als Hallo definiert
HELLO.HELLO
* (hello.hello "Kojiro") ;;Kann normal aufgerufen werden
Hi, Kojiro! This is Python.
Recommended Posts