[英]Import config from sphinx subfolder
我在项目根目录下的子文件夹(“ docs”)中创建了一个狮身人面像项目。 当我运行make文件autodoc时,它找不到配置文件并引发错误。
有办法解决吗?
这是错误:
/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'
谢谢乔凡尼
我给您的文件夹结构图看起来很凌乱。
好吧,据我所知,有两个可能的原因。
您没有将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
在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.