1

Sphinx を使用してプロジェクトの API ドキュメントをローカルで自動生成できますが、ReadTheDocs を使用しようとすると問題が発生します。ReadTheDocs がドキュメントを作成するとき、API ページはすべて空白です (たとえば、これを参照してください)。このブログ エントリを読んだ後、解決策は numpy や matplotlib などをモックすることであることに気付きました。だから私は次の行を私のconf.py

autodoc_mock_imports = ['numpy', 'matplotlib', 'matplotlib.pyplot', 'matplotlib.patches', 'matplotlib.path', 'matplotlib.lines', 'matplotlib.text', 'matplotlib.transforms', 'matplotlib.artist', 'cpickle']

その追加により、次の 2 つの Sphinx の問題により、ローカルまたは ReadTheDocs で API ドキュメントをビルドできません。

問題#1:

ドキュメントをビルドすると、次のエラーが発生します。

/Users/Ben/Documents/Python/clearplot/doc/source/api/clearplot.rst:19: WARNING: autodoc: failed to import module u'clearplot'; the following exception was raised:
Traceback (most recent call last):
File "/Users/Ben/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 385, in import_object
__import__(self.modname)
File "/Users/Ben/Documents/Python/clearplot/clearplot/__init__.py", line 33, in <module>
mpl_version = _parse_version_string(_mpl.__version__)
File "/Users/Ben/Documents/Python/clearplot/clearplot/__init__.py", line 19, in _parse_version_string
v_list = v.split(".")
AttributeError: type object '__version__' has no attribute 'split'

このエラーは、単純にmatplotlib.__version__.split("."). この問題をすぐに解決する方法がわからなかったので、コメントアウトしました。

問題#2:

ドキュメントをビルドすると、次のエラーが表示されます。

/Users/Ben/Documents/Python/clearplot/doc/source/api/clearplot.rst:19: WARNING: autodoc: failed to import module u'clearplot'; the following exception was raised:
Traceback (most recent call last):
File "/Users/Ben/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 385, in import_object
__import__(self.modname)
File "/Users/Ben/Documents/Python/clearplot/clearplot/__init__.py", line 45, in <module>
import params
File "/Users/Ben/Documents/Python/clearplot/clearplot/params.py", line 19, in <module>
_mpl.rcParams['backend'] = 'Qt4Agg'
TypeError: '_MockModule' object does not support item assignment

問題のある行 ( ) をコメントアウトすると、モジュールが辞書 への割り当てでいっぱいに_mpl.rcParams['backend'] = 'Qt4Agg'なるため、次の行でも同じエラーが発生します。paramsmatplotlib.rcParams

これらの問題は両方とも、修正するのが面倒なようです。より良い方法はありますか?そうでない場合、問題 1 と 2 をどのように解決すればよいですか?

これを読むと、モックで辞書を使用するための回避策があるようです。から来る文字列と同じくらい基本的なものを使用するための同様のソリューションを検索する必要がありますmatplotlib.__version__か?

それが役立つ場合、github のコードはこちらです。

4

0 に答える 0