我最近刚刚将一个Django项目转移到一个新的虚拟环境中。该项目运行良好,但我在构建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
非常感谢您的帮助。
发现conf.py需要如下所示:
import sys, os
sys.path.append('/path/to')
from myproject import settings
from django.core.management import setup_environ
setup_environ(settings)
希望这能帮助到别人。
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")
Django 1.7.5项目出现这个问题,我认为这是因为我们做出了一些奇怪的项目布局决定,但我需要使用jwhitlock的答案来解决这个问题:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
from django.conf import settings
当我进行无用的导入时,它发现了我的自定义Django设置,这些设置是在DJANGO_SETTINGS_MODULE
中指定的,但autodoc进程没有找到。我认为这是因为项目所在的文件夹的父文件夹同名,但检查sys.path
只会显示"正确"的文件夹,因此导入应该可以工作,但失败了,说找不到我的设置。