与 Python 导入的类比是系统定义……嗯,这是一个非常松散的类比,但是,这是要走的路。您在系统定义中声明依赖关系,然后在您希望它存在的源代码中声明依赖关系,因此如果您稍后引用外部代码的位,您只需执行此操作。
例如。在系统定义中你可能有:(通常它会在my-program.asd
文件中)
(defsystem :my-program
:version "0.0.1"
:serial t
:description "My program"
:components ((:file "some-source-file"))
;; `some-external-package' here is the "import", i.e. here you
;; declared that you will be using code from this package.
;; ASDF will generally "know" how to get the code of that package
;; from here on. But if it doesn't, then there are ways to "help it"
;; similar to how in Python there's a procedure to prepare your local
;; files to be used by easy_install
:depends-on (:some-external-package))
稍后在您的代码中,您只是假设some-external-package
您的程序可以使用 ,例如:
(some-external-package:exported-symbol)
应该可以工作。(“您的代码”是您在组件中指定的 some-source-file.lisp)。
这是关于如何定义系统的 ASDF 文档
在您将这个文件放在ASDF 可能找到它的位置后*,假设您已经安装了 ASDF(可用于您的 Lisp,SBCL 与它捆绑在一起),您将使用(asdf:load-system :my-program)
这里的解释加载这个系统。
* - 一种快速测试它的方法是
(push "/path/to/your/system/definition/" asdf:*central-registry*)