python-sphinx autodoc导入直到运行时才可能。解决办法:

时间:2017-06-19 07:02:33

标签: python python-2.7 python-import odoo-8 python-sphinx

我正在尝试使用Sphinx来记录Odoo项目,并且在使用autodoc时我遇到了失败,因为直到运行时才能导入。让我分解一下:

  1. 存储库中至少有一个模块需要从另一个模块导入常量。
  2. 由于项目根目录中没有 init ,为了使其正常工作,导入不是:

    来自[module_2] .models.whatever import what

  3. 相反,它必须是:

    来自openerp.addons的

    。[module_2] .models.whatever import whatever

  4. 这是因为odoo在运行时将来自不同插件路径的所有模块收集到一个池中,并且任何模块都可以从先前加载的模块导入(顺序取决于依赖性)。

    因为上面提到的导入是Sphinx无法解决的,所以我得到一个"无法导入名称..."我尝试构建时出错。我可以删除那个导入,从另一个模块复制粘贴常量,那就是这样,但是为了autodoc而破坏代码和实现一个糟糕的做法似乎是不确定的,我只是开始记录这个庞大的项目,所以我不知道会有多少这些会出现(我记得至少还有一个模块会这样做)。什么是最好的方法呢?

    顺便说一下,追溯是:

        Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/sphinx/ext/autodoc.py", line 657, in import_object
        __import__(self.modname)
      File "account_analytic_default_segment/__init__.py", line 1, in <module>
        from . import models
      File "account_analytic_default_segment/models/__init__.py", line 3, in <module>
        from . import account_analytic
      File "account_analytic_default_segment/models/account_analytic.py", line 7, in <module>
        from openerp.addons.account_analytic_policy.models.analytic import USAGE
    

    在结构上多了一点,项目位于Odoo配置的addons_path中包含的目录中,该目录与Odoo目录完全分开。在运行时,包含所有插件路径(将其视为一种符号链接)。但在运行之前,它们是无关的。我已经解决了其他&#34;来自openerp ...&#34;通过在PYTHONPATH中包含Odoo进行导入,但是这不能解决从项目中的另一个模块导入时的问题,因为它们在运行时之前并没有看到对方,在运行时它们只能从Odoo插件池访问。

0 个答案:

没有答案