27

我在这里读到,您可以使用命令构建模块,因此您无需手动创建一些初始文件。但是这样的命令在 master 上不起作用(在 Odoo 开发分支上):

./oe scaffold Academy ../my-modules

oe因为在 openerp 目录中没有调用这样的文件。这个东西在最新版本中有变化吗?如何在 Odoo 中搭建模块?

4

19 回答 19

32

现在 odoo 10 或更高版本使用 odoo-bin insted of odoo.py

  1. 在 shell 或终端上,将目录更改为您的 odoo 文件夹。也许它在/opt/odoo,或者它在/home/odoo

    cd /opt/odoo
    
  2. 使用 odoo.py 脚本创建一个新模块:

    ./odoo.py scaffold my_new_module ./addons/
    

(其中 my_new_module 是新模块的名称,./addons/ 是 Odoo 插件目录)

  1. 编辑 ./addons/my_new_module/__openerp__.py 文件。

    nano ./addons/my_new_module/__openerp__.py
    
  2. 更改名称字段以设置模块的用户友好名称(例如“Andrius 的新模块”)。更改描述和字段。并将您需要的模块(例如“邮件”)添加到模块依赖项依赖列表中。

    'depends': ['base', 'mail'],
    
  3. 编辑模型.py

    nano ./addons/my_new_module/models.py
    
  4. 在 my_new_module/models.py 文件中添加代码,例如:

from openerp import models, api

class FooterlessNotification(models.Model)
    _inherit = 'mail.notification'

    @api.model
    def get_signature_footer(self, user_id, res_model=None, res_id=None, context=None, user_signature=True):
        return ""

(例如,此代码将扩展“mail.notification”模型并将其 get_signature_footer 方法替换为返回空页脚的方法。)

  1. 通过 Odoo 设置安装您的模块。

要在那里找到它,您可能需要使用“更新模块列表”选项。

如果您也找不到“更新模块列表”选项,您可能需要在当前用户的设置中启用“技术功能”复选框。

要显示模块,而不仅仅是应用程序,请从搜索框过滤器中删除标记“应用程序”,方法是单击标记前的小“x”。

于 2014-12-09T09:17:24.947 回答
8

您可以使用 ./odoo-bin scaffold MODULE_NAME PATH_TO_STORE_YOUR_MODULE_OR_ADDONS

例如: ./odoo-bin scaffold module_name /odoo/odoo-server/custom_addons/

这里 custom_addons 是您在 odoo-server/ 中的目录

Odoo10中的cmd:

./odoo-bin scaffold <module_name> <destination path where you want to create> 
于 2017-07-08T11:14:01.667 回答
5

使用odoo.py代替oe

./path/to/odoo/odoo.py scaffold my-module
于 2015-05-01T15:32:59.820 回答
1

从 odoo 文档中创建模块的正确方法如下:

odoo.py scaffold [name of module] [desired path of module]

另外我建议您为您的模块使用不同的插件路径并且不要使用 odoo/addons,您可以在需要的位置创建一个新目录,然后将此目录添加到 odoo 配置或从启动时使用此插件执行 odoo

odoo.py --addons-path=[full path to your dir]
于 2016-03-11T08:35:09.120 回答
1

我已经在 AWS 的 /opt/odoo 目录中安装了 ODOO 9。

所以首先我改变目录:

 cd /opt/odoo

然后执行:

 odoo.py scaffold modulename ./addons/

给出以下错误消息:

 odoo.py command not found

对我有用的正确命令是:

 sudo python odoo.py scaffold modulename ./addons/

希望这可以帮助。

于 2016-06-01T09:30:39.530 回答
1

./“odoo.py 文件的路径”/odoo.py脚手架my-module ./“新插件的路径”/

用你的路径替换 qoutes

于 2016-11-08T03:56:12.813 回答
0

另一个版本

\###### begin ########

import sys

from openerp.cli import scaffold

sf = scaffold.Scaffold()

sf.run (sys.argv[1:])

\####### end #########

将顶部的脚本保存到您的openerp文件夹中。然后执行:

$ python (your-script-name) --help

或者:

$ python (the-script-name) --init Academy --dest my-modules --model academy --controller academy --web --theme
于 2014-08-24T21:59:05.487 回答
0

您是作为源代码还是软件包安装的。

对于你需要做的源

./odoo.py scaffold [module_name] [where_to_put_it]

如果从包裹中你需要做

 odoo.py scaffold [module_name] [where_to_put_it]

[where_to_put_it] 通常是您的插件路径,您的插件路径可能会根据您的安装方法而有所不同。

无需在 addons 文件夹中创建模块。但建议这样做。您可以添加新的插件路径

odoo.py --addons-path=[where_to_put_it]

用于模块结构参考和构建模块。

于 2016-08-02T14:32:22.247 回答
0

在某些情况下,需要将 Odoo python 文件传递​​给 Python 应用程序来执行。

python odoo.py scaffold modulename addons-path
于 2016-09-14T22:15:29.343 回答
0

转到终端并输入以下命令:

cd path/to/your/odoo-version/

./odoo-bin scaffold new_module /path/to/your/odoo-version/addons

然后转到 /path/to/your/odoo-version/addons 并刷新,您可以看到“new_module”将出现。

于 2017-01-15T09:00:05.450 回答
0

我建议您迈出 Git 克隆 odoo 的第一步。创建一个目录/文件夹,然后在您的目录/文件夹上 Git 克隆 odoo。运行之后,Python odoo.py 脚手架插件 test123。将或模块放在目录/文件夹插件上,以确保 odoo 可以读取您的模块。

于 2017-05-25T02:34:16.623 回答
0

如果您使用的是 odoo-10 或 11,则不要使用./oe scaffold Academy ../my-modules use : ./odoo-bin scaffold new_module /path/to/your/odoo-version/addons

如果你使用 odoo8 即 openerp8 然后使用odoo.py scaffold <module name> <where to put it>

但请确保您位于目录中的正确位置。还可以在链接中找到教程: https ://www.odoo.com/documentation/8.0/howtos/backend.html

- 谢谢

ABhay S

于 2018-07-25T04:14:22.857 回答
0

这是我的答案

cd path/to/odoo/odoo-server/

然后

./odoo-bin scaffold new_module_name /path/to/custom/addons

现在检查 /path/to/custom/addons,您将看到新模块,您可以在其中开始添加内容。

于 2018-10-25T14:54:07.247 回答
0

首先更改您的 odoo 源所在的目录: /opt/odoo

然后写这个命令: ./odoo-bin scaffold my_module_name /path-where-to-create

示例: ./odoo-bin 脚手架 odoo_module /Desktop/Repository

于 2020-03-03T12:02:19.663 回答
0

我的文件结构:-

Odoo |-- 插件 |-- debian |-- 文档 |-- 设置 |-- odoo-bin

要使用脚手架,您必须 cd 到 (Odoo) 文件夹,然后使用此命令

python3 odoo-bin 脚手架 name_of_your_module path_of_your_module

如果我想在 odoo/addons 创建一个名为 test 的模块

我只会使用命令:-

python3 odoo-bin 脚手架测试 odoo/addons

笔记:-

  • 我没有在文件结构中包含每个文件夹,只是为了给你一个想法
  • (python3) 这里取决于你的 python 版本
于 2020-11-02T17:16:15.640 回答
0

在 ubuntu 20.04 上安装的 Odoo v14 中,我使用

odoo scaffold module_name /opt/extra-addons
于 2021-04-18T23:59:56.967 回答
0

这是一个非常简单的答案:

如果您使用的是 Odoo v10+,只需使用以下命令:

./odoo-bin scaffold new_module_name

如果你在 Odoo.sh 上,你可以这样做:

odoo-bin scaffold new_module_name
于 2021-09-08T21:23:32.123 回答
0

我最近写了一篇关于这个主题的博客,并提供了不同的差异和论点,这将有助于维护新的自定义模块开发。

https://odedrabhavesh.blogspot.com/2021/09/how-to-create-odoo-custom-module-in-one-command.html

于 2021-09-08T21:45:21.283 回答
-2

可能此代码会有所帮助。将其保存为moe.py您想要的任何内容。

from openerp.cli import scaffold

sf = scaffold.Scaffold()

#sf.run(["--help"])

sf.run (["--init","Academy","--model","academy","--controller","academy","--web","--theme"])

我还是 Python 编程的新手。如果有人可以改进向run()函数发送参数的方式,那就太好了。

于 2014-08-24T21:37:56.193 回答