1

当我django-admin使用--settings开关运行时,它失败了:

(env) $ django-admin help --settings=myapp.settings
Traceback (most recent call last):
  File "/srv/http/myapp/env/bin/django-admin", line 11, in <module>
    sys.exit(execute_from_command_line())
  File "/srv/http/myapp/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/srv/http/myapp/env/lib/python3.5/site-packages/django/core/management/__init__.py", line 316, in execute
    settings.INSTALLED_APPS
  File "/srv/http/myapp/env/lib/python3.5/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/srv/http/myapp/env/lib/python3.5/site-packages/django/conf/__init__.py", line 41, in _setup
    self._wrapped = Settings(settings_module)
  File "/srv/http/myapp/env/lib/python3.5/site-packages/django/conf/__init__.py", line 97, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 986, in _gcd_import
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named 'myapp'

(env) $ ls myapp/settings.py
myapp/settings.py

manage.py工作得很好。为了清楚起见,我想有额外settings.py的开发环境。

此外,从此脚本导入设置:

#!/usr/bin/env python
import myapp.settings

也可以。

4

1 回答 1

1

好吧,文档确实说:

manage.py与您做同样的事情,django-admin但会为您处理一些事情:

  • 它将您项目的包放在sys.path.

  • 它设置DJANGO_SETTINGS_MODULE环境变量,使其指向您的项目settings.py文件。

但它也说:

如果需要在多个 Django 设置文件之间切换,请使用django-adminwithDJANGO_SETTINGS_MODULE--settings命令行选项。

所有示例都遵循以下原则:

$ django-admin migrate --settings=mysite.settings

事情是为了让它工作你的项目目录必须在sys.path. 实现这一目标的一种方法是:

PYTHONPATH=/path/to/project django-admin help --settings=myapp.settings

或者你可以使用--pythonpath开关,或者PYTHONPATH提前设置。

于 2016-11-10T08:44:59.137 回答