构建Plone 4.3.14时出现‘need more than 0 values to unpack’错误求助
问题根源拆解
你在配置Plone 4.3.14的buildout时遇到的核心问题是Python环境无法识别.tar.bz2格式的压缩包,错误信息里的Not a recognized archive type: /tmp/tmpuOPdYIget_dist/feedparser-5.0.1.tar.bz2已经明确指出了这点。后续的ValueError: need more than 0 values to unpack是连锁反应——因为无法解压这个bz2包,临时目录里没有生成任何文件,导致buildout的文件查找逻辑报错。
具体解决办法
下面是几个逐步排查的方案,按优先级从高到低排序:
1. 安装系统级bz2依赖库
Python的bz2模块依赖系统底层的libbz2库,如果你的系统没安装这个库,Python就无法处理bz2格式的压缩包。
- 针对Debian/Ubuntu系列:
sudo apt-get install libbz2-dev - 针对RHEL/CentOS系列:
sudo yum install bzip2-devel
如果你的Python是自行编译的,安装完依赖后需要重新编译Python;如果用的是系统自带Python或virtualenv,重启虚拟环境后再重新运行bin/buildout即可。
2. 强制使用zip格式的feedparser包
如果不想调整系统依赖,可以直接指定feedparser的zip版本来绕开bz2格式的问题。在你的buildout.cfg文件中,找到[instance]段的eggs配置,修改feedparser的条目:
[instance] eggs = # 保留你原有的其他依赖... feedparser==5.0.1 https://pypi.org/packages/source/f/feedparser/feedparser-5.0.1.zip
或者在versions.cfg里添加明确的URL指定:
[versions] # 其他版本配置... feedparser = 5.0.1 feedparser:url = https://pypi.org/packages/source/f/feedparser/feedparser-5.0.1.zip
3. 升级buildout相关工具
旧版本的zc.buildout或easy_install对压缩包格式的支持可能存在缺陷,尝试升级工具链:
# 先更新setuptools和zc.buildout pip install --upgrade setuptools zc.buildout # 重新初始化buildout bin/buildout bootstrap # 再次运行buildout bin/buildout
4. 清理buildout缓存和临时文件
缓存里可能存在损坏的包文件,清理后重新下载:
# 清理buildout下载缓存 rm -rf ~/.buildout/downloads/ # 清理临时目录中的损坏包文件 rm -rf /tmp/tmp*get_dist/
之后重新执行bin/buildout。
内容的提问来源于stack exchange,提问作者Ida
相关产品推荐
相关产品推荐

