对于全部是英文就不存在问题,但我们常用中文,这样会导致一个棘手的问题
约定:
系统Ubuntu trusty14.04 自带python2.7.6
python2.7.9 自己升级了
升级方法:
-------------------------
准备
# apt-get -y install build-essential libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
安装 python2.7.9
# mkdir -p /opt/soft/python
# cd /opt/soft/python
# wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
# tar -xzvf Python-2.7.9.tgz
# cd Python-2.7.9
# ./configure
# make
# make install
升级 python 完成
-------------------------
Python 默认编码为 ascii
把它设为utf-8, 这个编码处理相对好一些
在python的Libsite-packages文件夹下新建一个sitecustomize.py,内容为:
Python代码
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
如下图:
具体的lib/site-packages每个人有所有不同,找到自己的就可以。
改好重启python服务,说白了就是 ctrl+D 退出控制台,再输入python 进入
-----------------------------------
核对改的效果:
好了核对正确。
---------------------------------------
下面以升级一个模块,模块中有中文文件名为例:
模块目录如下:
点“模块升级” 报错了
查到 openerp/tools/osutil.py", line 57, in walksymlinks
没有编码为utf-8,自然无法正确得到中文的文件名,这时的变量是unicode
只能加一行,如下:
保存就可以,有这一行,以后模块中有文件名为中文的升级时就不报错了
刚才报错了刷新显示如下:
这时不要急,用数据库工具连到数据库 找到 ir_module_module 这个表,接着找到刚才模块升级的模块 rain_china_region
在数据表中筛选一下
把 红框中的 to upgrade 改为 installed
每当模块升级时,一定记得模块的目录名,这样升级万一错了,改一下状态就可以重新来做。
要不然,系统崩溃了不知如何处理。
点一下钩完成
上面改动了python代码,一定要记得重启odoo服务 生效
接着去刷新浏览器
复活了,再点“模块升级” ,ok可以正常升级
对于文件的中文 一般不会乱码,主要是python 设定了默认编码为utf-8
文件编码是utf-8 , 内容编码也是utf-8 这样就一致了