在Ubuntu 22.04中安装Odoo v12遇崩溃问题,求解决方案
在Ubuntu 22.04用Python3.6 venv安装Odoo v12时的崩溃问题及解决
问题描述
已完成以下操作:
- 手动安装Python3.6到
/usr/local/bin/python3.6 - 创建虚拟环境:
/usr/local/bin/python3.6 -m venv ./odoo12/ - 激活虚拟环境并成功安装所有Odoo依赖
- 运行Odoo命令:
python3 odoo-bin --addons-path="./addons" -d odoo12,过程出现资源警告;打开浏览器访问http://127.0.0.1:8069/web/login时服务器崩溃,报错:
python3: Python/compile.c:3021: compiler_nameop: Assertion `!_PyUnicode_EqualToASCIIString(name, "None") && !_PyUnicode_EqualToASCIIString(name, "True") && !_PyUnicode_EqualToASCIIString(name, "False")' failed.
Aborted (core dumped)
错误原因
这个断言错误的核心原因是Python3.6与Ubuntu 22.04默认的glibc 2.35版本不兼容。Python3.6属于较旧版本,编译时依赖的glibc版本远低于Ubuntu 22.04提供的版本,运行时会触发内部断言失败——尤其是Odoo v12代码中存在的动态编译逻辑,会涉及None/True/False这些关键字的处理,直接触发了这个兼容性问题。另外,手动编译Python3.6时如果未添加适配参数,也会加剧这类冲突。
解决步骤
方案1:容器化部署(推荐)
用Docker运行Odoo v12可以彻底规避系统依赖冲突:
- 拉取Odoo v12镜像:
docker pull odoo:12 - 启动PostgreSQL依赖容器:
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:10 - 启动Odoo容器:
docker run -p 8069:8069 --name odoo --link db:db -t odoo:12 - 访问
http://127.0.0.1:8069即可使用
方案2:重新编译适配版Python3.6
如果一定要用本地venv,重新编译Python3.6并添加系统适配参数:
- 卸载现有手动编译的Python3.6:
sudo rm -rf /usr/local/bin/python3.6 sudo rm -rf /usr/local/lib/python3.6 - 安装编译依赖:
sudo apt-get update && sudo apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget - 下载Python3.6.15稳定版源码:
wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz tar -xf Python-3.6.15.tgz cd Python-3.6.15 - 编译时添加glibc适配参数:
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath=/usr/local/lib" make -j$(nproc) sudo make altinstall--enable-shared和LDFLAGS参数确保Python链接系统glibc时不会出现版本冲突。 - 重新创建虚拟环境并安装依赖:
/usr/local/bin/python3.6 -m venv ./odoo12/ source ./odoo12/bin/activate pip install --upgrade pip pip install -r requirements.txt - 再次运行Odoo:
python odoo-bin --addons-path="./addons" -d odoo12
方案3:用pyenv隔离Python版本
pyenv在用户空间编译Python,完全隔离系统依赖:
- 安装pyenv及依赖:
sudo apt-get install -y git curl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl curl https://pyenv.run | bash - 配置shell加载pyenv:
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc source ~/.bashrc - 安装Python3.6.15:
pyenv install 3.6.15 - 创建并激活虚拟环境:
pyenv virtualenv 3.6.15 odoo12 pyenv activate odoo12 - 安装依赖并运行Odoo:
pip install --upgrade pip pip install -r requirements.txt python odoo-bin --addons-path="./addons" -d odoo12
内容的提问来源于stack exchange,提问作者Ernesto Ruiz
相关产品推荐
相关产品推荐

