Django项目启动Celery Worker报错:pycurl版本不匹配引发ImportError
Celery Worker启动失败:pycurl与libcurl版本不匹配问题解决
问题描述
- 启动Django项目的Celery Worker时,报错:
Unrecoverable error: ImportError('The curl client requires the pycurl library.') - 已确认pycurl安装成功(执行
python -c 'import pycurl' && echo "Success"返回Success) - Kombu包回溯信息显示版本冲突:
pycurl: libcurl link-time version (7.76.1) is older than compile-time version (7.86.0) - 本地通过brew安装了openssl@3和curl,但均为keg-only状态(未链接到系统路径)
解决方案
1. 配置环境变量,优先使用brew安装的curl和openssl
Mac自带的LibreSSL和旧版curl是导致版本冲突的根源,需让编译环境优先识别brew安装的版本:
# 临时配置(当前终端生效) export PATH="/usr/local/opt/curl/bin:/usr/local/opt/openssl@3/bin:$PATH" export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/openssl@3/lib" export CPPFLAGS="-I/usr/local/opt/curl/include -I/usr/local/opt/openssl@3/include" export PKG_CONFIG_PATH="/usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/openssl@3/lib/pkgconfig" # 永久配置(写入bash_profile,重启终端生效) echo 'export PATH="/usr/local/opt/curl/bin:/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.bash_profile echo 'export LDFLAGS="-L/usr/local/opt/curl/lib -L/usr/local/opt/openssl@3/lib"' >> ~/.bash_profile echo 'export CPPFLAGS="-I/usr/local/opt/curl/include -I/usr/local/opt/openssl@3/include"' >> ~/.bash_profile echo 'export PKG_CONFIG_PATH="/usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/openssl@3/lib/pkgconfig"' >> ~/.bash_profile # 立即加载配置 source ~/.bash_profile
2. 重新编译安装pycurl
卸载现有pycurl,基于新的环境变量重新安装,确保链接到brew的curl:
pip uninstall -y pycurl pip install pycurl --global-option="--with-curl=/usr/local/opt/curl"
3. 验证版本匹配
执行以下命令确认pycurl链接的curl版本与编译版本一致:
python -c "import pycurl; print(pycurl.version)"
输出应包含libcurl/7.86.0(而非系统自带的7.76.1)。
4. 重启Celery Worker
此时重新启动Celery Worker,版本冲突问题即可解决,ImportError不再触发。
内容的提问来源于stack exchange,提问作者SyntaxError
相关产品推荐
相关产品推荐

