【发布时间】:2015-01-18 10:48:54
【问题描述】:
我正在尝试为 Odoo 设置 apache2 网络服务器。我得到的唯一问题是它没有运行正确版本的python。我使用的是 squeez linux 发行版,所以默认版本是 2.6。但我需要2.7。所以我单独安装了它,我可以使用 virtualenv 来运行它(在我使用这种方法设置 Odoo 服务器之前)。现在我需要做同样的事情,而且还需要引入apache2。但由于某种原因,它总是运行 python 2.6 并且 Odoo (v8) 无法启动,因为它需要 python 2.7。
所以当我启动 apache2 并尝试打开服务器地址时,我得到了这个错误:
mod_wsgi (pid=32341): Target WSGI script '/opt/odoo/openerp-wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=32341): Exception occurred processing WSGI script '/opt/odoo/openerp-wsgi.py'.
Traceback (most recent call last):
File "/opt/odoo/openerp-wsgi.py", line 22, in <module>
import openerp
File "/opt/odoo/odoo/openerp/__init__.py", line 72, in <module>
import modules
File "/opt/odoo/odoo/openerp/modules/__init__.py", line 27, in <module>
from . import db, graph, loading, migration, module, registry
File "/opt/odoo/odoo/openerp/modules/graph.py", line 32, in <module>
import openerp.osv as osv
File "/opt/odoo/odoo/openerp/osv/__init__.py", line 22, in <module>
import osv
File "/opt/odoo/odoo/openerp/osv/osv.py", line 23, in <module>
from .orm import Model, TransientModel, AbstractModel
File "/opt/odoo/odoo/openerp/osv/orm.py", line 5, in <module>
from ..models import (
File "/opt/odoo/odoo/openerp/models.py", line 2083
groupby_dict = {gb['groupby']: gb for gb in annotated_groupbys}
此错误清楚地表明正在运行 python 2.6 版本(在 2.7 中引入了字典推导)。我尝试过的任何事情,如果得到相同的结果,我要么得到不同的错误,要么 apache 仍然运行 2.6 版。
我的配置:
网站配置:
<VirtualHost *:80>
ServerName some.eu
ServerAlias *.some.eu
WSGIDaemonProcess oe user=user group=some_group processes=2 python-path=/opt/odoo/odoo/ display-name=apache-odoo
WSGIScriptAlias / /opt/odoo/openerp-wsgi.py
WSGIProcessGroup oe
ErrorLog /var/log/odoo/odoo-error.log
CustomLog /var/log/odoo/odoo-access.log combined
<Directory /opt/odoo/odoo>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
我的wsgi配置文件:
import sys
import os
import site
#Activate virtualenv
activate_this = os.path.expanduser("/opt/odoo/venv/bin/activate_this.py")
execfile(activate_this, dict(__file__=activate_this))
site.addsitedir('/opt/odoo/venv/lib/python2.7/site-packages/')
sys.path.append("/opt/odoo/odoo")
import openerp
#----------------------------------------------------------
# Common
#----------------------------------------------------------
openerp.multi_process = True # Nah!
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '/path/to/addons/'
在 wsgi 文件中激活 virtualenv 似乎什么也没做。如果我将 apache 站点配置 python-path 更改为 /opt/venv/lib/python2.7/site-packages/,然后我开始收到不同的错误,说运行时版本是 2.6,编译时版本是 2.7。像这样:
/opt/odoo/odoo/openerp/osv/orm.py:2: RuntimeWarning: compiletime version 2.7 of module 'lxml.etree' does not match runtime version 2.6
有人对此有任何解决方案吗?
【问题讨论】:
标签: apache python-2.7 virtualenv wsgi python-2.6