跳转到主要内容

将Odoo适配以自动发现已安装的插件

项目描述

License: LGPL-3 https://badge.fury.io/py/odoo-autodiscover.svg https://travis-ci.org/acsone/odoo-autodiscover.svg?branch=master

增强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/

致谢

作者

非常感谢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 (16.5 kB 查看哈希)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页