当使用matlabdomain时,导入模块失败。

问题描述 投票:2回答:1

当尝试使用sphinx matlab域时,我无法让MWE工作,提供在 延长pypi网站

总有这样的 Can't import module 错误。我猜测,这个扩展会从m-code中生成伪模块,但我一直不明白这个机制是如何工作的。

dir的结构是这样的

root
   |--test_data
   |          |--MyHandleClass.m
   |
   |--doc
        |--------conf.py
        |--------Makefile
        |--------index.rst

文件 MyHandleClass.mindex.rst 上给出的示例代码。包场conf.py 开始是这样

import sys, os

sys.path.append(os.path.abspath('.'))
sys.path.append(os.path.abspath('./test_data'))    

# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
"sphinxcontrib.matlab",
"sphinx.ext.autosummary",
"sphinx.ext.autodoc"]

autodoc_default_flags = ['members','show-inheritance','undoc-members']
autoclass_content = 'both'

mathjax_path = 'http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default'

# The suffix of source filenames.
source_suffix = '.rst'

# The encoding of source files.
#source_encoding = 'utf-8'

# The master toctree document.
master_doc = 'index'

错误msg

WARNING: autodoc: failed to import module u'test_data'; the following exception was raised:
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\sphinx\ext\autodoc.py", line 335, in import_object
    __import__(self.modname)
ImportError: No module named test_data
E:\ME\doc\index.rst:13: WARNING: don't know which module to import for autodocumenting u'MyHandleClass' (try placing a "module" or "currentmodule" directive in the document, or giving an explicit module name)

在改变了这个和那个之后,也许有人有线索?

matlab python-sphinx
1个回答
2
投票

谢谢你试用matlabdomain sphinxcontrib扩展。为了使用Sphinx来记录MATLAB m文件,你需要添加 matlab_src_dirconf.py 如上所述 配置 文件中的部分。这是因为 Python 解释器不能导入 MATLAB m-文件。因此您应该 将您的MATLAB根目录添加到Python sys.path否则你会得到你收到的错误信息。而不是设置 matlab_src_dir 到包含您要记录的 MATLAB 项目文件夹的路径。

鉴于您的文件结构,为了记录 test_dataconf.py 有以下几点。

import os
# NOTE: don't add MATLAB m-files to `sys.path`
#sys.path.insert(0, os.path.abspath('.'))
# instead add them to `matlab_src_dir
matlab_src_dir = os.path.abspath('..')  # MATLAB

希望这样做!如果还有什么问题,请随时提问。我很乐意帮助你

© www.soinside.com 2019 - 2024. All rights reserved.