macOS下Python3.12运行Odoo17遇psycopg2导入错误
解决macOS下Python3.12+Odoo17中psycopg2共享库加载失败问题
问题现象
执行./odoo-bin -c odoo.conf时触发错误,回溯显示psycopg2的动态库加载失败:
Traceback (most recent call last): File "/Users/abdulrhman/PycharmProjects/odoo17/pythonProject/odoo17/odoo-bin", line 5, in import odoo File "/Users/abdulrhman/PycharmProjects/odoo17/pythonProject/odoo17/odoo/_psycopg.cpython-312-darwin.so Reason: no LC_RPATH's found Process finished with exit code 1
此前已出现libpq.5.dylib缺失的ImportError,重装psycopg2、检查依赖后问题未解决。
解决方案
1. 安装PostgreSQL获取libpq库
macOS系统默认不带libpq,通过Homebrew安装:
brew install postgresql
安装完成后,记录libpq的路径:
- Intel芯片Mac:
/usr/local/opt/postgresql/lib - Apple Silicon芯片Mac:
/opt/homebrew/opt/postgresql/lib
2. 临时配置环境变量(即时生效)
激活虚拟环境后,执行对应芯片的命令:
# Intel Mac export DYLD_LIBRARY_PATH=/usr/local/opt/postgresql/lib:$DYLD_LIBRARY_PATH # Apple Silicon Mac export DYLD_LIBRARY_PATH=/opt/homebrew/opt/postgresql/lib:$DYLD_LIBRARY_PATH
若需永久生效,将上述命令添加到虚拟环境的venv/bin/activate文件末尾,或个人Shell配置文件(~/.zshrc/~/.bashrc)。
3. 重新编译安装psycopg2
卸载现有psycopg2相关包:
pip uninstall -y psycopg2-binary psycopg2
指定libpq路径编译安装:
# Intel Mac pip install psycopg2 --no-binary psycopg2 --global-option=build_ext --global-option="-L/usr/local/opt/postgresql/lib" --global-option="-I/usr/local/opt/postgresql/include" # Apple Silicon Mac pip install psycopg2 --no-binary psycopg2 --global-option=build_ext --global-option="-L/opt/homebrew/opt/postgresql/lib" --global-option="-I/opt/homebrew/opt/postgresql/include"
4. 验证与测试
先验证psycopg2是否能正常加载:
python -c "import psycopg2; print('psycopg2 loaded successfully')"
无报错后,重新运行Odoo:
./odoo-bin -c odoo.conf
替代方案:切换到兼容的Python版本
若Python3.12兼容性问题仍存在,可通过pyenv安装Python3.11(Odoo17官方推荐的稳定版本):
- 安装pyenv:
brew install pyenv
- 安装Python3.11:
pyenv install 3.11.6
- 设置当前项目使用Python3.11:
pyenv local 3.11.6
- 重新创建虚拟环境并安装依赖:
python -m venv venv source venv/bin/activate pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者Abdalrhman AL_Atassi
相关产品推荐
相关产品推荐

