请耐心等待我,因为我是Python / Django / Unix的新手。
我正在学习如何在本地和生产环境中使用不同的settings.py
文件。以下内容来自the official Django docs page on django-admin.py
中的--settings
选项部分,
- 设置示例用法:
django-admin.py syncdb --settings = mysite.settings
我的项目结构如下:
mysite
L manage.py
L mysite
L __init__.py
L local.py
L urls.py
L production.py
L wsgi.py
但是,当我从父mysite
目录运行以下命令时,
$ django-admin.py runserver --settings = mysite.local
我收到以下错误:
File "/Users/testuser/.virtualenvs/djdev/lib/python2.7/site-packages/django/conf/__init__.py", line 95, in __init__
raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'mysite.local' (Is it on sys.path?): No module named mysite.local
根据我在网络上的各种文章中收集的内容,我认为我需要将项目目录路径添加到bash配置文件中的PYTHONPATH
变量。这是正确的方法吗?
编辑:将斜线更改为点,但同样的错误仍然存在。
答案 0 :(得分:2)
--settings
标志采用虚线Python路径,而不是文件系统上的相对路径。
含义--settings=mysite/local
实际上应该是--settings=mysite.local
。如果您在运行django-admin
时当前的工作目录是项目根,那么您不必触摸PYTHONPATH
。
答案 1 :(得分:1)
您必须将/
替换为.
$ django-admin.py runserver --settings=mysite.local
您也可以在manage.py
更新PYTHONPATH。在if __name__ == "__main__":
内添加以下内容。
import sys
sys.path.append(additional_path)