plot-directiveを使用してmatplotlib のダイアグラムをオンザフライで生成および埋め込むpython-3プロジェクトがあり、プロジェクトのドキュメントを自動生成するためにReadTheDocsを使用しています。
プロット ディレクティブは確かに python-2では正常に動作しますが、現在 python-3 では失敗しています。
具体的には、RTD のログに表示されるエラーは次のとおりです。
ビルド標準エラー
html
-----
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/wltp/envs/master/lib/python3.4/site-packages/sphinx/application.py", line 325, in setup_extension
mod = __import__(extension, None, None, ['setup'])
ImportError: No module named 'matplotlib'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/wltp/envs/master/lib/python3.4/site-packages/sphinx/cmdline.py", line 253, in main
warningiserror, tags, verbosity, parallel)
File "/home/docs/checkouts/readthedocs.org/user_builds/wltp/envs/master/lib/python3.4/site-packages/sphinx/application.py", line 119, in __init__
self.setup_extension(extension)
File "/home/docs/checkouts/readthedocs.org/user_builds/wltp/envs/master/lib/python3.4/site-packages/sphinx/application.py", line 328, in setup_extension
err)
sphinx.errors.ExtensionError: Could not import extension matplotlib.sphinxext.plot_directive (exception: No module named 'matplotlib')
Extension error:
Could not import extension matplotlib.sphinxext.plot_directive (exception: No module named 'matplotlib')
そして、犯人は、「freetype」C lib を mniss したためにコンパイルされていない matplotlib にたどることができます。
セットアップ出力
...
requirements
-----
...
BUILDING MATPLOTLIB
matplotlib: yes [1.4.2]
python: yes [3.4.0 (default, Apr 11 2014, 13:05:11) [GCC
4.8.2]]
platform: yes [linux]
REQUIRED DEPENDENCIES AND EXTENSIONS
numpy: yes [not found. pip may install it below.]
six: yes [six was not found.]
dateutil: yes [dateutil was not found. It is required for date
axis support. pip/easy_install may attempt to
install it after matplotlib.]
pytz: yes [pytz was not found. pip will attempt to install
it after matplotlib.]
tornado: yes [tornado was not found. It is required for the
WebAgg backend. pip/easy_install may attempt to
install it after matplotlib.]
pyparsing: yes [pyparsing was not found. It is required for
mathtext support. pip/easy_install may attempt to
install it after matplotlib.]
pycxx: yes [Official versions of PyCXX are not compatible
with matplotlib on Python 3.x, since they lack
support for the buffer object. Using local copy]
libagg: yes [pkg-config information for 'libagg' could not
be found. Using local copy.]
freetype: no [The C/C++ header for freetype2 (ft2build.h)
could not be found. You may need to install the
development package.]
OPTIONAL LATEX DEPENDENCIES
dvipng: yes [version 1.14]
ghostscript: yes [version 9.10]
latex: yes [version 3.1415926]
pdftops: no
============================================================================
* The following required packages can not be built:
* freetype
doc-generation パスを作成するには、RTD FAQで指示されているように、ファイル内の次のコードを使用して、プロット ディレクティブをモックアウトして "無効にする" 必要があり./conf.py
ます。
virtualenv
(サイトパッケージの可視性の有無にかかわらず) rtd-specificのさまざまな組み合わせを試しましたがrequirements.txt
、成功しませんでした。
誰かがそれを行う方法を見つけましたか?
これらは、問題をさらに掘り下げたい人のためのヒントです。
- RTD にプリインストールされているネイティブ ライブラリの「公式」リスト
- RTDのソースから見つけた、ビルド サーバーのセットアップに使用される実際のファイル。
pip-requirements.txt