将Odoo适配以自动发现已安装的插件
项目描述
增强Odoo,无需使用--addons-path选项即可自动发现可用的插件。
对于Odoo 8和9,它通过查看odoo_addons命名空间包中的插件来工作。对于Odoo 10和11,它通过在PYTHONPATH中查找odoo/addons目录来工作。
以这种方式安装的插件可以使用setuptools-odoo的帮助进行打包。
如何安装
创建一个virtualenv并确保您有pip的较新版本(通过运行pip install -U pip或使用get-pip.py)。
使用标准的Odoo安装程序在您的virtualenv中安装Odoo(一种好方法是运行来自Odoo根目录的pip install -e .)。
确保Odoo已正确安装
pip list必须显示odoo。
对于Odoo 8和9,运行 python -c "import openerp.api" 和 openerp-server 必须正常工作。
对于Odoo 10和11,运行 python -c "import odoo.api" 和 odoo 必须正常工作。
安装此软件包(pip install odoo-autodiscover)。
如何使用
在 odoo/addons 命名空间(对于Odoo 10和11)或 odoo_addons 命名空间(对于Odoo 8和9)中创建和/或安装odoo插件,可能需要使用 setuptools-odoo 软件包的帮助。
像往常一样运行odoo,并注意插件路径已自动扩展。
完整示例
以下命令安装Odoo 8.0夜间版,然后安装 base_import_async,自动拉取所有必需的依赖项(即 connector)。
它使用来自pypi的OCA插件的预构建wheel软件包。
# create and activate a virtualenv virtualenv venv . ./venv/bin/activate # install Odoo 8.0 nightly pip install -r https://raw.githubusercontent.com/odoo/odoo/8.0/requirements.txt pip install https://nightly.odoo.com/8.0/nightly/src/odoo_8.0.latest.zip # install odoo-autodiscover pip install odoo-autodiscover # install base_import_async from pypi pip install odoo8-addon-base_import_async --pre # start odoo openerp-server
此时,您应该在Odoo日志中看到site-packages目录出现在插件路径中。
您可以轻松安装额外的插件。例如,如果您想要一个Odoo 8 shell,使用OCA shell模块,只需pip安装该模块即可
pip install odoo8-addon-shell openerp-server shell
要查看虚拟环境中安装的插件包,请简单使用 pip list | grep odoo<8|9|10>-addon-(注意官方插件是 odoo 包的一部分)。
技术说明
在Odoo 8和9中,无法将 openerp.addons 设置为命名空间包(因为 openerp/__init__.py 包含代码),我们使用名为 odoo_addons 的伪包,仅为此命名空间中通过setuptools安装的插件发现的目的。 odoo_addons 不打算作为导入钩子导入,因为Odoo导入钩子将确保所有插件都可以像往常一样从 openerp.addons 导入。
在Odoo 10中,我们尝试使用pkg_resource风格的命名空间包。它一直工作到setuptools 31,那时我们不得不应对 https://github.com/acsone/setuptools-odoo/issues/10。因此,在 odoo-autodiscover 2.0中采用了这个解决方案。
对于Python 3下的Odoo 11,我们希望再次使 odoo-autodiscover 失效,这就是 https://github.com/odoo/odoo/pull/19517 的目的。
有关命名空间包的更多信息,请参阅 https://packaging.pythonlang.cn/guides/packaging-namespace-packages/。
有用链接
另请参阅setuptools-odoo: https://pypi.python.org/pypi/setuptools-odoo
致谢
作者
Stéphane Bidoul (ACSONE)
非常感谢Daniel Reis,他清除了道路,并感谢Laurent Mignon,他让我相信可以使用标准Python设置工具完成此操作,并提出了odoo_addons命名空间包的想法。
更改
2.0.0 (2017-09-19)
自动发现脚本的更好的弃用警告
改进setup.py和readme
添加对Odoo 11和Python 3的测试,其中odoo-autodiscover不是必需的
2.0.0b1 (2017-09-17)
主要重写:不再使用适配启动脚本来猴子补丁Odoo,而是使用后导入钩子,在导入odoo或openerp时自动执行该操作。
对于Odoo 10和11,不要依赖命名空间包,而是查找PYTHONPATH中的odoo/addons目录。
自动测试
Odoo 10支持,以解决https://github.com/acsone/setuptools-odoo/issues/10
初步支持Odoo 11
1.0.3 (2016-09-30)
odoo-autodiscover已内置到Odoo 10中!
1.0.2 (2016-02-06)
[改进] 添加openerp-gevent-autodiscover,并猴子补丁预分叉服务器,以便启动该脚本而不是openerp-gevent。
1.0.1 (2015-12-30)
[修复] odoo-autodiscover.py:以更可靠的方式发现和导入官方odoo.py脚本,因此现在可以从deb包安装的Odoo中使用。
1.0.0 (2015-12-28)
初始稳定版本
项目详情
odoo-autodiscover-2.0.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d40e9525b31b0eab386f5e40273bed6f97ba998767eb73aeaefa1b4cce46d108 |
|
MD5 | f41077630e5d199a36677fafde29b06b |
|
BLAKE2b-256 | 7b79e5353fba19818950062759f392afb7cd5dccd1fe3b7e4dea7f12ef6ce2ff |