按官方文档从源码安装CKAN 2.8.3时遇文件缺失及命令问题
ckan命令找不到 刚好我之前在Ubuntu 18.04上部署过CKAN 2.8.3,遇到过几乎一模一样的问题,给你梳理下原因和解决方案:
一、为什么requirements-py2.txt不存在?
这是因为CKAN 2.8.x版本已经统一了依赖文件命名,官方文档里关于requirements-py2.txt的说明确实过时了。CKAN 2.8.3同时支持Python 2.7和3.5+,根目录下的requirements.txt已经会自动适配当前Python版本的依赖,你直接用它安装是完全正确的操作,不用纠结找不到旧文件名的问题。
二、ckan命令找不到怎么解决?
这个问题的核心是CKAN的可执行命令没被加入当前虚拟环境的PATH,或者你没完成CKAN的本地安装步骤,按以下步骤排查修复:
1. 确保CKAN被正确安装到虚拟环境里
你已经激活了default虚拟环境(命令行前缀的(default)能看出来),但可能之前漏了一步关键的本地安装:
- 先确认在虚拟环境中:
source /usr/lib/ckan/default/bin/activate(如果已经激活可以跳过) - 进入CKAN源码目录:
cd /usr/lib/ckan/default/src/ckan - 执行本地安装命令:
pip install -e .这个命令会把CKAN以可编辑模式安装到虚拟环境,同时会把
ckan命令放到虚拟环境的bin目录下,这样系统就能找到它了
2. 检查虚拟环境的PATH配置
有时候即使安装了,PATH也没包含虚拟环境的bin目录,执行echo $PATH看看输出里有没有/usr/lib/ckan/default/bin。如果没有,手动添加:export PATH=/usr/lib/ckan/default/bin:$PATH
之后再试试ckan generate config /etc/ckan/default/ckan.ini
3. 处理sudo下的PATH问题
如果生成配置文件时需要sudo(因为/etc/ckan/default是系统目录),直接用sudo ckan ...会导致PATH重置,找不到虚拟环境里的命令。这时候可以用这个命令:sudo -E env "PATH=$PATH" ckan generate config /etc/ckan/default/ckan.ini-E参数会保留当前用户的环境变量,确保sudo也能找到ckan命令。
总结一下
- 你用
requirements.txt安装依赖是对的,文档里的旧说明已经不适用CKAN 2.8.3了; ckan命令找不到主要是虚拟环境的PATH或者安装步骤的问题,按上面的步骤操作就能解决。
内容的提问来源于stack exchange,提问作者madsb

