簡體   English   中英

Sphinx matlab文檔錯誤:缺少模塊'std'

[英]Sphinx matlab documentation error: missing module 'std'

我正在嘗試使用sphinx記錄我的MATLAB類。 但每當我想運行make html我都會收到以下錯誤:

% make html
sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v1.4.6

Extension error:
Could not import extension sphinxcontrib.matlab (exception: No module named 'std')
make: *** [Makefile:53: html] Error 1

我在ArchLinux上嘗試了以下安裝方式,但都導致了同樣的問題:

試試1:

yaourt -S python-sphinx # (was already installed by default, just to show that the package came from arch repo)
sudo pip install -U sphinxcontrib-matlabdomain

試試2:

yaourt -R python-sphinx # (I also removed all dependencies)
sudo pip -U install sphinx
sudo pip -U install -U sphinxcontrib-matlabdomain

在任何情況下它都沒有工作(總是來自上面的錯誤)。 在每次嘗試中,我還驗證了std模塊是否存在

# ll /usr/lib/python3.5/site-packages/sphinxcontrib*
-rw-r--r-- 1 root root 326 Sep 28 11:02 /usr/lib/python3.5/site-packages/sphinxcontrib_blockdiag-1.5.5-py2.7-nspkg.pth
-rw-r--r-- 1 root root 326 Sep 28 11:00 /usr/lib/python3.5/site-packages/sphinxcontrib_matlabdomain-0.2.7-py3.5-nspkg.pth

/usr/lib/python3.5/site-packages/sphinxcontrib:
total 152
-rw-r--r-- 1 root root 11457 Sep 28 11:02 blockdiag.py
-rw-r--r-- 1 root root 37815 Jun 20  2015 mat_documenters.py
-rw-r--r-- 1 root root 27529 Oct  7  2014 matlab.py
-rw-r--r-- 1 root root 46088 Jun 20  2015 mat_types.py
drwxr-xr-x 1 root root   126 Sep 28 11:03 __pycache__
-rw-r--r-- 1 root root 22278 Feb  7  2014 std.py

/usr/lib/python3.5/site-packages/sphinxcontrib_blockdiag-1.5.5.dist-info:
total 32
-rw-r--r-- 1 root root 1033 Sep 28 11:02 DESCRIPTION.rst
-rw-r--r-- 1 root root    4 Sep 28 11:03 INSTALLER
-rw-r--r-- 1 root root 2127 Sep 28 11:02 METADATA
-rw-r--r-- 1 root root 1193 Sep 28 11:02 metadata.json
-rw-r--r-- 1 root root   14 Sep 28 11:02 namespace_packages.txt
-rw-r--r-- 1 root root 1054 Sep 28 11:03 RECORD
-rw-r--r-- 1 root root   14 Sep 28 11:02 top_level.txt
-rw-r--r-- 1 root root  110 Sep 28 11:02 WHEEL

/usr/lib/python3.5/site-packages/sphinxcontrib_matlabdomain-0.2.7-py3.5.egg-info:
total 40
-rw-r--r-- 1 root root    1 Sep 28 11:00 dependency_links.txt
-rw-r--r-- 1 root root  487 Sep 28 11:00 installed-files.txt
-rw-r--r-- 1 root root   14 Sep 28 11:00 namespace_packages.txt
-rw-r--r-- 1 root root    1 Jun 20  2015 not-zip-safe
-rw-r--r-- 1 root root 8547 Sep 28 11:00 PKG-INFO
-rw-r--r-- 1 root root   28 Sep 28 11:00 requires.txt
-rw-r--r-- 1 root root  549 Sep 28 11:00 SOURCES.txt
-rw-r--r-- 1 root root   14 Sep 28 11:00 top_level.txt

PS:我的默認python版本為3.5.2

編輯1:

% head $(which sphinx-build)
#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from sphinx import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
% which sphinx-build
/usr/bin/sphinx-build
% sphinx-build --version
Sphinx (sphinx-build) 1.4.6
% python --version
Python 3.5.2
% /usr/bin/python --version
Python 3.5.2

sphinx-contrib存儲庫中的擴展似乎適用於Python 2.導入規則在Python 3中已更改,因此當使用Python 2解釋器運行Python 3代碼時可能會發生此類錯誤。

解決方案是為Python 2安裝Sphinx及其所有依賴項。您的發行版可能包含python2-sphinx 在Fedora和Ubuntu上,包python-*總是Python 2或兩者兼而有之, python3-*是Python 3包。

在Arch Linux上,我知道python是符號鏈接到python3 所以可能還有其他python2-*包。 安裝pip2 (因為pip可能是Arch Linux上的pip3 )並使用它來安裝Sphinx。

您可以通過運行head -n 1 $(which sphinx-build)來查找調用哪個解釋器,然后檢查路徑。

  • /usr/bin/python :這是Ubuntu或Fedora上的Python 2,Arch Linux上的Python 3
  • /usr/bin/python3 :絕對是Python 3
  • /usr/bin/python2 :絕對是Python 2
  • /usr/bin/env python :與其他人類似。

否則,可以在conf.py內部print Python版本, conf.py明確打印。

sphinxcontrib-matlabdomain的最新版本(> = 0.2.11)支持Python 2和3.我認為這應該可以解決您看到的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM