Sphinx-api无法导入Django项目的模块

时间:2012-01-15 03:16:04

标签: django python-sphinx

我已经在我的virtualenv中,我确信一切都在python路径上。

(myenv)admin@ubuntu:/var/lib/mydirectory/doc$ sphinx-apidoc -o . ../testproject/

Creating file ./testproject.rst.
Creating file ./testproject.apps.rst.
# ... and many more .... #
Creating file ./modules.rst.

(myenv)admin@ubuntu:/var/lib/mydirectory/doc$ make html
sphinx-build -b html -d _build/doctrees   . _build/html
Making output directory...
Running Sphinx v1.1.2
loading pickled environment... not yet created
building [html]: targets for 17 source files that are out of date
updating environment: 17 added, 0 changed, 0 removed

Traceback (most recent call last):t                                                                                  
  File "/var/lib/server/myenv/lib/python2.6/site-packages/sphinx/ext/autodoc.py", line 321, in import_object
    __import__(self.modname)
ImportError: No module named webclient.__init__
# ... and many more .... #

/var/lib/mydirectory/doc/testproject.rst:7: WARNING: autodoc can't import/find module 'testproject.__init__', it reported error: "No module named testproject.__init__", please check your spelling and sys.path
# ... and many more .... #

当我打开html文件时,我只看到标题和章节标题。没有autodocs。

是什么导致了这个问题?我已经在我的虚拟环境中......

有什么想法吗?我正在使用Sphinx 1.1.2。

感谢。

1 个答案:

答案 0 :(得分:2)

我不是Sphinx的专家。但答案很清楚恕我直言。

首先,错误消息显示模块不可导入。这意味着某些.py文件中的import语句是错误的。

可能的原因:

  1. 旧版导入语句
  2. 不正确的导入声明
    • level-depth import
    • 错字
  3. 不在工作python路径上的模块
  4. 2.b特别感兴趣。如果您在myapp / mysubapp / models.py中,并且想要导入myapp / views.py,则需要提供以下语句:

    # myapp/mysubapp/models.py
    import mysite.myapp.view         # correct
    import myapp.view                # incorrect
    

    检查每条WARNING消息,并查看每个相应的.py文件。找到相应的import语句,并仔细检查可用性。

    现在回到virtualenv问题。在我看来,你的virtualenv也可能是一个主要原因。看看第一个错误:

    ImportError: No module named webclient.__init__
    

    这是一个该死的问题。仔细检查您的路径变量是否已正确设置。