Sphinx-api не может импортировать модули проекта Django - PullRequest
3 голосов
/ 15 января 2012

Я уже нахожусь в своем virtualenv, и я уверен, что все идет по пути питона.

(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-файлы, я вижу только заголовки и заголовки разделов. Нет автодок.

Что вызывает эту проблему? Я уже в моей виртуальной среде ...

Есть идеи? Я использую Sphinx 1.1.2.

Спасибо.

1 Ответ

2 голосов
/ 16 января 2012

Я не эксперт в сфинксе.Но ответ ИМХО довольно ясен.

Во-первых, сообщения об ошибках показывают, что модули не импортируются.Это означает, что операторы импорта в некоторых файлах .py неверны.

Возможные причины:

  1. Устаревшие операторы импорта
  2. Неправильные операторы импорта
    • импорт по глубине уровня
    • опечатка
  3. Модули, не находящиеся на рабочем пути Python

2.b представляют особый интерес. Если вы находитесь в myapp / mysubapp / models.py, и вы хотите импортировать myapp / views.py, вам необходимо предоставить следующую инструкцию:

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

Проверьте каждое сообщение WARNING и посмотрите на каждый соответствующий файл .py.Найдите соответствующий оператор импорта и дважды проверьте доступность.

Теперь вернемся к проблеме virtualenv.Мне кажется, что ваша виртуальность может быть главной причиной.Просто посмотрите на первую ошибку:

ImportError: No module named webclient.__init__

Это чертовски проблема.Дважды проверьте, правильно ли установлены ваши переменные пути.

...