2012-11-14 15 views
6

私はsphinxのドキュメントとドキュメントをリンクしようとしています。私は次のエラーを取得するドキュメントを生成自動的にドキュメントを読んだしようとすると、ローカルのドキュメントを構築することができますが、:Readthedocsの私のコードのためのImportError

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

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ディレクトリにファイルを自分の設定をインポートするための課題であると考えてコメントに基づいて

更新

。 (私が行っていたように)absolute importを行うのではなく、settings.pyとconf.pyの場所に基づいて相対インポートを行うべきです。

設定ファイルを私のconf.pyにインポートしたい

-mousedb 
--settings.py 
-Docs 
--source 
---conf.py 
--build 
+2

rtd設定で 'Use virtualenv'チェックボックスを設定しようとしましたか? setup.py install –

+0

を使ってvirtualenvの中にプロジェクトをインストールしました。同じエラーが表示されました。絶対パスではなく、sys.path.appendで相対パスを使用する必要がありますか(ローカルインストールの場合) – Dave

+1

ローカル絶対パスは、readthedocsのサーバーにはほとんど存在しないことが保証されています。 ) –

答えて

7

「コードへのローカル絶対パス」について話して、コードへの相対パスを設定する方法について説明しました。これは、あなたが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='[email protected]', 
     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になることです。

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

関連する問題