管理Common Lisp中的依赖关系

时间:2017-10-13 22:20:22

标签: python lisp common-lisp dependency-management quicklisp

我从Python世界来到Lisp,它基本上运行在virtualenvpip上,作为创建容器和管理依赖项的方法。

目前,我正在更详细地学习Common Lisp,并想知道它的社区理念是如何管理依赖关系和包。

例如,如果我跑:

(ql:quickload '(cl-who hunchentoot parenscript elephant fiveam css-lite cl-json))

据我所知,所有这些软件包都将安装在quicklisp目录中的某个位置。 (我不确定它们的安装形式或位置。)

问题是,是否有必要安装不同版本的软件包,具体取决于手头的代码。也就是说,那个人做了什么?他只是依靠包的向后兼容性吗?

Common Lisp世界如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

如果您需要特定版本的软件包进行开发,则只需将其克隆到Quicklisp(~/quicklisp/local-projects/)自动找到的存储库中。该版本将适用于所有项目。如果您需要将其作为项目本地,或者通过应用程序轻松发送依赖项列表,则可以使用Qlot,这非常类似于pip需求文件和venv。

在另一个答案中也指出了Quicklisp bundles

更重要的是,有Quicklisp controller来构建dists,一整套协同工作的程序包,就像Quicklisp一样,但是对于你自己的相关软件包集合。这就是cl21所做的事情。

我建议你不要再打扰那些,直到你知道你需要它为止;)