繁体   English   中英

从sphinx子文件夹导入配置

[英]Import config from sphinx subfolder

我在项目根目录下的子文件夹(“ docs”)中创建了一个狮身人面像项目。 当我运行make文件autodoc时,它找不到配置文件并引发错误。

有办法解决吗?

项目结构

conf.py

生成文件

myreplicator.py

myreplicator.rst

这是错误:

/vagrant/python/mymongo/doc/myreplicator.rst:4: WARNING: autodoc: failed to import module 'myreplicator'; the following exception was raised:
Traceback (most recent call last):
  File "/var/venv/mymongo/lib/python3.5/site-packages/sphinx    /ext/autodoc.py", line 518, in import_object
    __import__(self.modname)
  File "/vagrant/python/mymongo/myreplicator.py", line 20, in <module>
logging.config.fileConfig('conf/logging.conf')
  File "/opt/py35/lib/python3.5/logging/config.py", line 76, in fileConfig
    formatters = _create_formatters(cp)
  File "/opt/py35/lib/python3.5/logging/config.py", line 109, in _create_formatters
    flist = cp["formatters"]["keys"]
  File "/opt/py35/lib/python3.5/configparser.py", line 956, in __getitem__
    raise KeyError(key)
KeyError: 'formatters'

谢谢乔凡尼

我给您的文件夹结构图看起来很凌乱。

好吧,据我所知,有两个可能的原因。

1.系统路径

您没有将myreplicator.py目录放入sys.path因此sphinx.autodoc.py无法找到您的模块(因为它将仅在系统路径中搜索该模块。因此,您需要将项目文件夹插入到sys.path首先)。 可以通过在conf.py包含以下内容来conf.py

import os
import sys
sys.path.insert(0, os.path.abspath('../')) # based on what I see in your structure, the myrepicator.py is in the parent directory of conf.py

2.第三方包

myreplicator.py内部,有一些第三方模块无法加载,很可能是一些C类型的库(如.pyd )。 在这种情况下,您可以使用以下代码模拟那些无法导入的第三方模块

from mock import MagicMock, Mock  # if you are using python2
# from unittest.mock import MagicMock, Mock # if you are using python3

class Mock(MagicMock):
    @classmethod
    def __getattr__(cls, name):
            return Mock()

MOCK_MODULES = ['mymongolib ', 'numpy', 'pandas'] # packages you want to mock
sys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)

但是,从您发布的异常来看,此错误的可能性很小。

总的来说,我认为错误很可能是由于第一个原因造成的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM