写在前面:
接触odoo已经两年多了,在大学做课程设计的时候,无意间了解到odoo这个erp框架,当时的odoo在国内还默默无闻,我也不曾想过自己毕业后会从事到odoo框架的相关开发工作中来。两年多的时间里,我见证了它在国内的发展,也随着工作经验的积累,对odoo已经有了一定的了解,在这里,我希望能分享自己两年多来学习到的一些知识和经验,也希望有可能吸引到更多的朋友加入到odoo的开发中来。
根据初步的想法,文章将会包含odoo开发环境的搭建(Mac),个性化,ORM模块,controller,视图、模板、记录以及其继承机制,widget,权限,打印模板,报表,部署,源码分析等部分。关于更新时间,由于本人家境贫寒,每日上下班通勤时间高达三个小时,工作日能抽出的时间比较有限,主要将在周末更新。给自己定一个小目标,每周至少更新两到三篇文章。
在Mac Os上安装odoo12开发环境
我们将要安装的软件包:
1)、git: 代码管理
2)、postgres: odoo12运行所需要的数据库
3)、docker: 用于构建postgres容器,pgadmin4容器
4)、>=python3.5: odoo12运行的python环境
4)、odoo requirements: 运行odoo需要的python依赖包
项目代码:
git clone -b v1.0 https://github.com/lingjiawen/odoo_project.git
1、安装homebrew
打开终端,输入:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、安装git
brew install git
安装完成后,查看git版本检查是否安装成功:
3、安装python3
最新款的mac已经自己安装python2.7 和 python3.7,检查运行版本:
如果没有,使用homebrew进行安装(homebrew安装python3会自动安装pip3):
brew install python3
4、安装python虚拟环境
pip3 install virtualenv
查看是否安装成功:
创建python3虚拟环境到用户目录并激活:
virtualenv -p python3 ~/odoo12_project #创建虚拟环境
source ~/odoo12_project/bin/active #激活虚拟环境
5、拉取代码并安装依赖:
mkdir -pv ~/code/odoo_project # 建立工作目录 cd ~/code/odoo_project # 进入工作目录 git clone -b 12.0 https://github.com/odoo/odoo.git
安装所需依赖:
brew install freetype jpeg libpng libtiff xz webp brew install node # 安装node npm install -g less less-plugin-clean-css #使用node安装依赖 # 完成后进入odoo12目录 cd odoo12 pip3 install -r requirements.txt # 安装requirements
安装pgcopy2可能会出现如下报错:
可能的解决方法:
方法1:
pip3 uninstall psycopg2 pip3 list --outdated pip3 install --upgrade wheel pip3 install --upgrade setuptools pip3 install psycopg2
方法2:
xcode-select --install
如果上述两种方法无法解决,那么尝试下列办法:
vim requirements.txt # 编辑文件 # 找到psycopg2 # 在前面添加'#'注释 # 保存退出 pip3 install psycopg2-binary==2.8.3 # 手动安装 # 重新安装requirements pip3 install -r requirements.txt
6、安装docker
直接访问官网hub登录下载docker桌面版并运行: https://hub.docker.com/editions/community/docker-ce-desktop-mac
查看docker和docker-compose版本:
7、使用docker安装postgres数据库
docker pull postgres:10
docker pull dpage/pgadmin4
进入项目路径,创建db运行的docker-compose文件:
cd ~/code/odoo12_project/ touch docker-compose_db.yaml vim docker-compose_db.yaml
文件如下:
version: '2' services: postgres_10_db: image: postgres:10 container_name: postgres_10_db environment: - POSTGRES_USER=odoo12 - POSTGRES_PASSWORD=odoo12 - POSTGRES_DB=postgres - PGDATA=/var/lib/postgresql/data/pgdata volumes: - postgres_10_db_volume:/var/lib/postgresql/data/pgdata ports: - "5432:5432" network_mode: bridge volumes: postgres_10_db_volume: external: true
创建容器Volume并运行:
docker volume create --name=postgres_10_db_volume
docker-compose -f docker-compose_db.yaml up -d # 守护态运行
# 运行pgadmin, 账号密码请自己设置 docker run -p 8888:80 \ -e “PGADMIN_DEFAULT_EMAIL=sysadmin" \ -e “PGADMIN_DEFAULT_PASSWORD=sysadmin" \ -d dpage/pgadmin4
查看运行状态:
我们已经注意到数据库已经运行,端口为5432,pgadmin运行端口为8888,在浏览器输入localhost:8888访问pgadmin:
8、使用pycharm运行odoo12:
1)打开pycharm(如没有pycharm请自行下载安装,不再赘述),打开项目,如图:
2)设置虚拟环境运行:
左上角点开pycharm->preferences->project->project interpreter->setting->add:
3)选择existing environment,路径选择刚刚创建的odoo12_project/bin.python,点击ok。
4)添加启动文件:
在目录下新建config目录,在config目录下新建odoo.conf文件:
[options] addons_path = ~/code/odoo12_project/odoo12/odoo/addons,~/code/odoo12_project/odoo12/addons ; admin_passwd = admin ; csv_internal_sep = , db_host = 0.0.0.0 db_password = odoo12 db_user = odoo12 db_port = 5432 ; db_maxconn = 64 ; db_name = False ; db_template = template1 ; dbfilter = .* ; debug_mode = False ; email_from = False ; limit_memory_hard = 2684354560 ; limit_memory_soft = 2147483648 ; limit_request = 8192 ;limit_time_cpu = 12000 ;limit_time_real = 24000 ; list_db = True ; log_db = False ; log_handler = [':INFO'] ; log_level = info ; logfile = None ; longpolling_port = 8072 ; max_cron_threads = 2 ; osv_memory_age_limit = 1.0 ; osv_memory_count_limit = False ; smtp_password = False ; smtp_port = 25 ; smtp_server = localhost ; smtp_ssl = False ; smtp_user = False ; workers = 5 ; xmlrpc = True ; xmlrpc_interface = ; xmlrpc_port = 8069 ; xmlrpcs = True ; xmlrpcs_interface = ; xmlrpcs_port = 8071
在主目录下新建启动文件set-up,并添加以下内容:
#!/usr/bin/env python3 # set server timezone in UTC before time module imported import os import sys __import__('os').environ['TZ'] = 'UTC' LIB_PATH = os.path.join(os.path.split(os.path.realpath(__file__))[0], '.', 'odoo12') sys.path.append(LIB_PATH) import odoo if __name__ == "__main__": odoo.cli.main()
最后目录结构如下:
5)pycharm添加配置文件:
Script path: 选择刚才建立的set-up文件;
Parameters:指定定配置文件,-c config/odoo.conf ;
Python interpreter:选择刚才配置的虚拟环境;
6)点击运行按钮,我们可以看到odoo12已经在8069端口运行:
7)使用浏览器访问localhost:8069查看效果:
Tips:下一篇文章将为大家带来包含数据库创建页面的优化。