如何从Python执行公共Lisp代码

2024-09-27 09:29:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Python中执行公共Lisp(SBCL)代码,例如通过shell。我还需要运行一个名为Shop3的Lisp库来执行我的Lisp代码。我试过:

os.system('sbcl && (asdf:load-system "shop3") && (in-package:SHOP-USER) && (load "/Users/kiliankramer/Desktop/Shop-Planer/planner-new")')

但它不工作,它只是启动sbcl,然后在加载asdf库“shop3”之前停止

你能告诉我如何执行我的Lisp代码,或者我必须运行外部Lisp程序(包括Lisp库)才能执行它吗

谢谢转发。:)


Tags: 代码inpackageosloadshellshopsystem
1条回答
网友
1楼 · 发布于 2024-09-27 09:29:40

&&链接shell命令。也就是说,它启动sbcl并等待它终止,如果终止成功,那么它将尝试以shell命令的形式执行(asdf:load-system "shop3")(不是您想要的!)

您需要使用sbcl command line arguments

os.system("sbcl  eval '(asdf:load-system \\"shop3\\")'  eval '(in-package :SHOP-USER)'  load /Users/kiliankramer/Desktop/Shop-Planer/planner-new")

但是,您可能希望使用the more modern interface而不是^{}。 它还可以避免转义引号&;c:

subprocess.run(["sbcl"," eval",'(asdf:load-system "shop3")',
                " eval",'(in-package :SHOP-USER)',
                " load","/Users/kiliankramer/Desktop/Shop-Planer/planner-new")

相关问题 更多 >

    热门问题