You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Quicklisp与Portacle定义本地Common Lisp系统遇阻求助

Common Lisp包系统实践问题解决

核心问题

  • 执行(ql:quickload "census-api")提示“System not found”,但ql:*local-project-directories*已包含项目目录
  • 必须手动编译packages.lisp才能加载系统,希望无需手动处理文件,直接通过Quicklisp加载
  • (in-package "census-api")执行失败,改用(in-package :census-api)才生效

问题分析与解决方案

1. 修复ASD文件,让Quicklisp自动加载包定义

你的census-api.asd未包含packages.lisp,这是必须手动加载它的根本原因。包定义需要在其他代码文件前加载,因此要把:file "packages"添加到:components列表最前端。同时原ASD文件的:description部分缺少闭合双引号,这一语法错误也会导致系统识别失败。

修改后的census-api.asd代码:

(defsystem "census-api"
  :description "A collection of utilities to pull Census, BLS, and Google DistanceMatrix API data.

For default use, evaluate the following --

Census: (set-fips), (set-hh-input), (print-hh-output (output-list))
BLS: (set-fips), (print-bls-data (prepare-hashed-bls-data))
Distancematric: (set-location-params), (print-dm-output (get-data (*api-response*)))
"
  :author "Brian LastName <xxxx@gmail.com>"
  :license "To be determined"
  :version "0.5"
  :depends-on ("dexador" "shasht")
  :serial t
  :components ((:file "packages")
               (:file "census-api")
               (:file "distancematrix-api")))

2. 解决"System not found"问题

  • 调整目录结构:将所有项目文件放到/portacle/projects/census-api/子目录下(而非直接放在/portacle/projects/根目录),Quicklisp要求每个项目有独立的子目录,ASD文件需放在该子目录内。
  • 刷新本地项目索引:在Portacle中执行(ql:register-local-projects),该命令会扫描ql:*local-project-directories*下的所有ASD文件并注册到Quicklisp系统。
  • 重启Portacle:确保新的配置和索引生效。

3. 关于in-package的用法问题

你用defpackage #:census-api定义的是关键字符号,而(in-package "census-api")传入的字符串会被转换为当前包(通常是COMMON-LISP-USER)下的符号,和你定义的关键字包并非同一个。正确写法有两种:

(in-package :census-api)

或者

(in-package #:census-api)

前者是更常用的标准写法。


验证步骤

  1. 将所有文件移至/portacle/projects/census-api/目录
  2. 替换为修改后的ASD文件
  3. 执行(ql:register-local-projects)
  4. 执行(ql:quickload "census-api"),此时系统会自动加载所有文件,包括packages.lisp
  5. 用(in-package :census-api)切换到目标包,即可正常调用函数

内容的提问来源于stack exchange,提问作者Halbert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:05:02