我最近刚刚将一个Django项目转移到一个新的virtualenv。该项目工作正常,但我在构建我的Sphinx文档时遇到问题。
在我的conf.py中我有这个:
import sys, os
sys.path.append('/path/to/myproject')
from django.core.management import setup_environ
from myproject import settings
setup_environ(settings)
但是当我使用make html
时,我收到此错误:
from myproject import settings
ImportError: No module named myproject
任何帮助都非常感激。
答案 0 :(得分:3)
原来conf.py需要看起来像这样:
import sys, os
sys.path.append('/path/to')
from myproject import settings
from django.core.management import setup_environ
setup_environ(settings)
希望这可能有助于某人。
答案 1 :(得分:2)
Django 1.4已弃用setup_environ
。这是Django 1.4及更高版本的类似代码:
import sys, os
cwd = os.getcwd()
parent = os.path.dirname(cwd)
sys.path.append(parent)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
答案 2 :(得分:0)
Django 1.7.5项目存在这个问题,我认为这取决于我们做出的一些奇怪的项目布局决策,但我需要一个额外的步骤来解决这个问题,使用jwhitlock的答案:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
from django.conf import settings
当我执行无用的导入时,它找到了我在DJANGO_SETTINGS_MODULE
中指定但在autodoc进程中找不到的自定义Django设置。我认为这是因为该项目位于其父级具有相同名称的文件夹中,但检查sys.path
仅显示“正确”文件夹,因此导入应该可以正常工作,但会说它无法找到我的设置。 / p>