私は非常に大きな Lisp プロジェクトを持っており、その出力をプログラムで Python プログラムにパイプします。つまり、Python を使用して入力に対して Lisp プログラムを呼び出し、出力を Python に戻します。
プロジェクトは Clozure Common Lisp (ccl64) でのみコンパイルされ、実行可能ファイルに変換する方法を見つけようとしましたが (私は Mac OS X を使用しています)、多くの行き止まりに遭遇しました (私は Lisp ではありません)。プログラマー)。
Clozure Common Lisp のこのドキュメントは上記の解決策を提供するはずですが、私はそれを理解できませんでした。私が作成した例ではファイルが作成されましたが、ターミナルはそれらを実行可能ファイルとして実行しませんでした。
この質問の回答Compiling Common Lisp to an executable except using ccl64's save application function に従おうとしました。
$ ccl64
Welcome to Clozure Common Lisp Version 1.9-dev-r15612M-trunk (DarwinX8664)!
? (in-package :ccl)
#<Package "CCL">
? (defun main () (print "hello"))
MAIN
? (save-application "hello" :toplevel-function #'main)
Python のサブプロセスを使用して ccl64 を呼び出し、Lisp プログラムを実行し、出力を取得しようとしています。ただし、サブプロセスは何らかの理由で ccl64 コマンドの実行を拒否します。これまでに書いたものは次のとおりです。
import subprocess
process = subprocess.Popen(['ccl64', '-h'], stdout=subprocess.PIPE)
out, err = process.communicate()
変数out
には、ccl64 から使用法/ヘルプを取得した出力が含まれている必要があります。代わりに、エラーが発生します。
Traceback (most recent call last):
File "sub.py", line 3, in <module>
process = subprocess.Popen(['ccl64', '-h'], stdout=subprocess.PIPE)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Python で ccl64 を呼び出して Lisp プロジェクトから出力を取得するにはどうすればよいですか?