2016-09-28 71 views
3

我想使用獅身人面像證明我的MATLAB類。但每當我想運行make html我得到以下錯誤:獅身人面像matlab文檔錯誤:缺少模塊'標準'

% 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 
+1

你的'sphinx-build'運行在Python 3.5上嗎? 'head $(獅身人面像 - 構建)'給你什麼?另外,'sphinx-build'給了什麼? –

+0

@MartinUeding謝謝你的評論。我用一些信息更新了這篇文章。我猜它是用Python 3.5運行的。有沒有一種方法可以確定嗎? – bonanza

+1

您可以將Python版本的'print()'語句添加到'conf.py'。但我的預感是你的插件是爲Python 2而設計的(就像同一個倉庫中的'feed'插件),並且Python 3的新導入規則導致導入失敗。所以試着用'python2'安裝Sphinx,也許你在Arch Linux上有'pip2'。那麼你的擴展可能工作。 –

回答

1

在sphinx-的擴展contrib存儲庫似乎是用於Python 2的。Python 3中的導入規則已經發生了變化,因此當Python 3代碼與Python 2解釋器一起運行時,可能會發生此類錯誤。

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

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

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

  • /usr/bin/python:這是在Ubuntu或Fedora,Python 3中的Python 2 Arch Linux的
  • /usr/bin/python3:絕對的Python 3
  • /usr/bin/python2:絕對的Python 2
  • /usr/bin/env python:別人相似。

否則,人們可以在conf.py的內部執行Python版本的print,以便明確打印它。

1

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