python - 我如何告诉 django-admin 使用哪个设置模块?

标签 python django django-admin django-settings manage.py

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

(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

也有效。

最佳答案

嗯,the doc确实说:

manage.py does the same thing as django-admin but takes care of a few things for you:

  • It puts your project’s package on sys.path.

  • It sets the DJANGO_SETTINGS_MODULE environment variable so that it points to your project’s settings.py file.

但它也说:

If you need to switch between multiple Django settings files, use django-admin with DJANGO_SETTINGS_MODULE or the --settings command line option.

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

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

问题是它能工作your project dir must be in sys.path 。实现这一目标的一种方法是:

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

或者您可以使用--pythonpath切换,或提前设置PYTHONPATH

关于python - 我如何告诉 django-admin 使用哪个设置模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40518524/

相关文章:

linux - ubuntu 的 UWSGI https 配置

python - 通过 Django 的 MySQL REGEXP 查询不会返回任何内容,但 MySQL 中的查询工作得很好,有什么想法吗?

django - 如何根据用户限制 django-admin 中的字段?

python - django 1.3 - 无法注册我的自定义 UserAdmin

linux - 在Django中连接服务器linux ubuntu系统

javascript - 清除链接的相关下拉组合框选择中选定(子)类别的所有子类别

python - 如何在图像中找到矩形轮廓?

python - 值错误 : Unknown label type: 'unknown'

python - 使用 Python 正则表达式匹配换行符和任何字符

python - Django:ValueError:当前限制超过最大限制