一个人做 odoo 开发,随意些也无所谓。不过随着时间的推移,项目越来越多,用到的插件也越来越多,再加上团队协作的时候,用到版本控制,眼花缭乱的感觉就来了。
- 有些插件时间久了,就忘了到底是用来做什么的
- 同一个数据库中安装太多的插件,时不时的冲突和报错让人很烦恼
- 不想把版本控制代码和odoo的框架代码分离,不方便调试
- 希望在同一个 odoo 框架代码中管理不同的项目
虚拟运行环境
特别是在项目开发和管理中,使用 Python 虚拟环境(virtual environment),笔者认为最实用的好处是以下两点:
1. 依赖隔离
虚拟环境允许你在一个独立的环境中安装和管理 Python 包和依赖。每个虚拟环境都有自己独立的 site-packages 目录,因此不同项目的依赖不会互相影响。
如果在不同项目中使用不同版本的库(例如 Django 2.x 和 Django 3.x),虚拟环境可以确保每个项目使用自己需要的版本,不会引起版本冲突。
2. 可移植性
通过在虚拟环境中安装项目的所有依赖项,并保存 requirements.txt 文件,你可以轻松地在不同开发环境之间移植项目。其他开发人员可以通过以下步骤快速搭建相同的开发环境:
1 2 3 4 5 | #在激活虚拟环境后,使用以下命令生成 requirements.txt 文件: pip freeze > requirements.txt #需要在新的环境中恢复这些依赖时,在该项目的根目录中执行以下命令即可: pip install -r requirements.txt |
代码启动与调试
虽然 windows 有简单快捷的安装方式,但在开发项目的时候,笔者更喜欢将 odoo 源码放在指定的位置,自行启动运行和调试。
1.源码启动运行
激活虚拟环境,安装好框架代码所依赖的包,然后启动 odoo 。为了方便使用,我们直接将这些命令放在 bat 文件中,这样 双击 bat 文件,即可启动运行 odoo ,bat 命令和启动截图如下:
1 2 3 4 5 6 7 8 9 10 11 | @echo off echo dev.gardenengineer.club echo %date% %time% REM 激活虚拟环境 call F:\odoo16\odoo16_venv_3.10.11\Scripts\activate REM 启动Odoo python odoo-bin -c odoo.conf REM 停止 |
2.源码调试
vscode 中的调试配置文件与运行截图如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "odoo_dev", "type": "debugpy", "request": "launch", "python": "F:/odoo16/odoo16_venv_3.10.11/Scripts/python.exe", "pythonPath": "F:/odoo16/odoo16_venv_3.10.11/Scripts/python.exe", // 虚拟环境的 Python 可执行文件路径 "program": "F:/odoo16/dev.gardenengineer.club/odoo-bin", "cwd": "F:/odoo16/dev.gardenengineer.club", "console": "integratedTerminal", "args": ["-c", "F:/odoo16/dev.gardenengineer.club/odoo.conf"], "env": { "PYTHONPATH": "F:/odoo16/odoo16_venv_3.10.11/Lib/site-packages" // 虚拟环境的路径 } } ] } |
项目区分
因为所有的 odoo 项目都集中在一套框架代码中,区分好不同的项目和项目运行后的数据,就会让开发变得更加清晰明了,笔者的处理方式比较简单。
1.代码区分
如上图所示,在 odoo 源码的根目录中创建一个 dev 文件夹,然后在 dev 文件夹中创建 common 文件夹,用来存放各项目公用的插件,可以在 common 文件夹中添加一个说明文档,备注各个插件的简要说明。接下来创建自定义文件夹,用来存放不同的项目源码,对项目进行区分。如果项目需要和其他公用插件配合使用,那么就在清单文件 __manifest__.py 中添加依赖;这样,在项目部署的时候,只需要安装项目插件即可,简化操作。
如果需要版本控制,直接在各项目自定义的文件夹中初始化 git 或是 svn 版本控制即可,这样也不会影响到代码的调试。注意:别忘记把自定义的项目目录添加到 odoo 配置文件的 addons_path 中。
2.数据区分
为不同的项目创建各自独立的数据库即可。