odoo16 第二章:开发环境搭建

根据预期的用例,有多种安装 Odoo 的方法。对于 Odoo 社区的开发人员和 Odoo 员工来说,首选方法是执行源安装(从源代码运行 Odoo)。

准备环境

首先,按照贡献指南的环境设置部分来准备您的环境。

 重要

以下步骤仅适用于 Odoo 员工。第三方无法访问上述存储库。

到目前为止,您应该已将源代码下载到两个本地存储库中,一个用于odoo/odoo ,一个用于odoo/enterprise. 这些存储库旨在将更改推送到 GitHub 上预定义的共享分叉。当您开始为代码库做出贡献时,这将被证明是很方便的,但就本教程的范围而言,我们希望避免培训材料污染共享存储库。然后让我们在第三个存储库中开发您自己的模块technical-training-sandbox。与前两个存储库一样,它将成为addons-path引用包含 Odoo 模块的所有目录的一部分。

  1. odoo/odoo按照与和存储库相同的流程odoo/enterprise,访问 github.com/odoo/technical-training-sandbox并单击“分叉”按钮在您的帐户下创建存储库的分叉。

  2. 使用以下命令将存储库克隆到您的计算机上:

    $ git clone git@github.com:odoo/technical-training-sandbox.git
    
  3. 配置存储库以将更改推送到您的分支:

    $ cd technical-training-sandbox/
    $ git remote add dev git@github.com:<your_github_account>/technical-training-sandbox.git
    $ git remote set-url --push origin you_should_not_push_on_this_repository
    

就是这样!您的环境现在已准备好从源运行 Odoo,并且您已成功创建一个存储库作为插件目录。这将允许您将您的工作推送到 GitHub。

现在,在存储库中进行一些小更改technical-training-sandbox,例如更新 README.md文件。然后,按照贡献指南的“做出您的第一个贡献”部分,将您的更改推送到 GitHub 并创建PR。这将使您能够分享您即将进行的工作并接收反馈。master调整使用分支和存储库的说明technical-training-sandbox

为了确保持续的反馈循环,我们建议您在达到新的里程碑(例如完成教程的一章)后立即推送新的提交。

 注解

文件系统上存储库的具体位置并不重要。但是,为了简单起见,我们假设您已将所有存储库克隆到同一目录下。如果不是这种情况,请确保相应地调整以下命令,提供从存储库odoo/odoo到 odoo/technical-training-sandbox存储库的适当相对路径。

运行服务器

启动与odoo-bin

一旦设置了所有依赖项,Odoo 就可以通过运行odoo-bin服务器的命令行界面来启动。

$ cd $HOME/src/odoo/
$ ./odoo-bin --addons-path="addons/,../enterprise/,../technical-training-sandbox" -d rd-demo

您可以使用多个命令行参数来运行服务器。在本次培训中,您只需要其中的一些。

-d<数据库>

将要使用的数据库。

--插件路径<目录>

存储模块的目录的逗号分隔列表。扫描这些目录中的模块。

--限制时间CPU<限制>

防止工作线程对每个请求使用超过 <limit> CPU 秒。

--限制时间真实<限制>

防止工作线程处理请求的时间超过 <limit> 秒。

 小技巧

  • 和参数可用于防止工作线程在调试源代码时被杀死--limit-time-cpu--limit-time-real

  • 您可能会遇到类似的错误。在这种情况下,您可能需要使用以下命令重新安装模块AttributeError: module '<MODULE_NAME>' has no attribute '<$ATTRIBUTE'>$ pip install --upgrade --force-reinstall <MODULE_NAME>
    如果多个模块发生此错误,您可能需要使用以下命令重新安装所有要求$ pip install --upgrade --force-reinstall -r requests.txt
    您还可以清除python缓存来解决问题:
    $ cd $HOME/.local/lib/python3.8/site-packages/ $ find -name '*.pyc' -type f -delete 
  • 其他常用的参数有:

    • -i:在运行服务器之前安装一些模块(逗号分隔列表)。

    • -u:在运行服务器之前更新一些模块(逗号分隔列表)。

登录 Odoo

在浏览器中打开http://localhost:8069/ 。我们建议使用ChromeFirefox或任何其他带有开发工具的浏览器。

要以管理员用户身份登录,请使用以下凭据:

  • 电子邮件:admin

  • 密码:admin

启用开发者模式

开发人员或调试模式对于培训很有用,因为它可以访问其他(高级)工具。在接下来的章节中,我们将始终假设您已启用开发人员模式

现在启用开发者模式。选择您喜欢的方法;它们都是等价的。

 注解

仅当至少安装了一个应用程序时才能访问“设置”屏幕的主页。在下一章中,您将被引导安装自己的应用程序。

额外的工具

有用的 Git 命令

以下是一些对您的日常工作有用的 Git 命令。

  • 切换分支:
    当您切换分支时,两个存储库(odoo 和 enterprise)必须同步,即两者需要位于同一分支中。
    $ cd $HOME/src/odoo
    $ git switch 16.0
    
    $ cd $HOME/src/enterprise
    $ git switch 16.0
    
  • 获取并变基:

    $ cd $HOME/src/odoo
    $ git fetch --all --prune
    $ git rebase --autostash odoo/16.0
    
    $ cd $HOME/src/enterprise
    $ git fetch --all --prune
    $ git rebase --autostash enterprise/16.0
    

代码编辑器

如果您在 Odoo 工作,您的许多同事都在使用VSCodeVSCodium(开源等效项)、 PyCharmSublime Text。但是,您可以自由选择您喜欢的编辑器。

正确配置你的 linter 非常重要。使用 linter 通过显示语法和语义警告或错误来帮助您。Odoo 源代码尝试尊重 Python 和 JavaScript 的标准,但其中一些标准可以忽略。

对于 Python,我们使用 PEP8 并忽略以下选项:

  • E501: 线太长

  • E301: 预期有 1 个空行,发现有 0 个

  • E302: 预期有 2 个空行,发现有 1 个

对于 JavaScript,我们使用 ESLint,您可以在此处找到配置文件示例

PostgreSQL 管理员工具

您可以使用前面演示的命令行或使用 GUI 应用程序(例如pgAdminDBeaver )来管理 PostgreSQL 数据库。

要将 GUI 应用程序连接到数据库,我们建议您使用 Unix 套接字进行连接。

  • 主机名/地址:/var/run/postgresql

  • 港口:5432

  • 用户名:$USER

Python调试

当遇到错误或试图了解代码如何工作时,简单地打印出来就可以大有帮助,但适当的调试器可以节省大量时间。

您可以使用经典的 Python 库调试器(pdb、 pudbipdb),也可以使用编辑器的调试器。

在下面的示例中,我们使用 ipdb,但过程与其他库类似。

  1. 安装库:

    pip install ipdb
    
  2. 放置触发器(断点):

    import ipdb; ipdb.set_trace()
    

     例子

    def copy(self, default=None):
        import ipdb; ipdb.set_trace()
        self.ensure_one()
        chosen_name = default.get('name') if default else ''
        new_name = chosen_name or _('%s (copy)') % self.name
        default = dict(default or {}, name=new_name)
        return super(Partner, self).copy(default)
    

这是命令列表:

帮助)[命令]

如果未提供参数,则打印可用命令的列表。使用命令作为参数,打印有关该命令的帮助。

PP表达

expression使用模块可以很好地打印的值pprint

在哪里)

打印堆栈跟踪,最新帧位于底部。

向下)

将当前帧在堆栈跟踪中向下移动一级(到较新的帧)。

向上)

将当前帧在堆栈跟踪中向上移动一级(到较旧的帧)。

下一个)

继续执行,直到到达当前函数的下一行或返回。

继续)

继续执行,只有遇到断点时才停止。

步)

执行当前行。在第一个可能的场合停止(在被调用的函数中或在当前函数的下一行中)。

辞职)

退出调试器。正在执行的程序被中止。

现在您的服务器正在运行,是时候开始编写您自己的应用程序了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值