7

Sphinx ドキュメントをReadtheDocsにリンクしようとしています。ドキュメントをローカルでビルドすることはできますが、ReadtheDocsにドキュメントを自動的に生成させようとすると、次のエラーが発生します。

スフィンクスの標準エラー

Making output directory...

Exception occurred:
  File "/var/build/user_builds/mousedb/checkouts/latest/Docs/source/conf.py", line 25, in <module>
    from mousedb import settings
ImportError: No module named mousedb
The full traceback has been saved in /tmp/sphinx-err-n_8fkR.log, if you want to report the issue to the developers.
Please also report this if it was a user error, so that a better error message can be provided next time.
Either send bugs to the mailing list at <http://groups.google.com/group/sphinx-dev/>,
or report them in the tracker at <http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!

私のプロジェクト名は mousedb です。自動ビルドではこのインポート エラーが発生するのに、ローカルでは発生しない理由がわかりません。

アップデート

コメントに基づいて、これは設定ファイルを兄弟Docsディレクトリにインポートする際の問題だと思います。(私が行っていたように) 絶対インポートを行うのではなく、 と の場所に基づいて相対インポートを行う必要がsettings.pyありconf.pyます。

conf.py次のディレクトリ構造を使用して、設定ファイルを my にインポートしたいと考えています。

-mousedb
--settings.py
-Docs
--source
---conf.py
--build
4

1 に答える 1

8

最初は「私のコードへのローカル絶対パス」について話し、現在はコードへの相対パスの設定について話しました。これはおそらく、setup.pyファイルも virtualenv も使用していないことを意味します。

Docs/および と同じディレクトリにmousedb/、次を追加しsetup.pyます。

from setuptools import setup

setup(name='mousedb',
      version='0.1',
      description="My sample package",
      long_description="",
      author='TODO',
      author_email='todo@example.org',
      license='TODO',
      packages=['mousedb'],
      zip_safe=False,
      install_requires=[
          'Django',
          # 'Sphinx',
          # ^^^ Not sure if this is needed on readthedocs.org
          # 'something else?',
          ],
      )

このファイルをコミット/プッシュした後、プロジェクトの readthedocs 設定に移動できます。「use virtualenv」設定を有効にします。これにより、「setup.py install を使用して virtualenv 内にプロジェクトがインストールされます」。

最終結果は、readthedocs が行うすべての python 関連のプロジェクトがsys.path.

問題の考えられる原因は、ローカル システムの「ルート」ディレクトリ内から sphinx を実行したことです。このディレクトリでは、python がmousedb/現在のディレクトリでパッケージを魔法のように見つけます。しかし、 readthedocs は明らかにDocs/ディレクトリ内からそれを実行するため、 を見つけることができませんmousedb

于 2012-11-18T17:20:15.923 に答える