2016-11-10 2 views
0

Wenn ich django-admin mit --settings Schalter laufen, es scheitert:Wie kann ich django-admin mitteilen, welches Einstellungsmodul verwendet werden soll?

(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 

Aber manage.py funktioniert gut. Um es klar zu machen, würde ich gerne zusätzliche für Entwicklungsumgebung haben.

Auch Einstellungen dieses Skript importieren:

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

funktioniert auch.

Antwort

0

Nun, the doc in der Tat sagt:

manage.py das gleiche wie django-admin tut, sondern kümmert sich um ein paar Dinge für Sie:

  • Es Paket Ihr Projekt setzt auf sys.path.

  • Die Umgebungsvariable DJANGO_SETTINGS_MODULE wird so festgelegt, dass sie auf die Datei Ihres Projekts verweist.

Aber es sagt auch:

Wenn Sie zwischen mehreren Django umschalten müssen Einstellungsdateien verwenden django-admin mit DJANGO_SETTINGS_MODULE oder --settings Befehlszeilenoption.

Und alle Beispiele sind entlang der folgenden Zeilen:

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

Die Sache für sie ist your project dir must be in sys.path zu arbeiten. Und eine Möglichkeit, dies zu erreichen ist:

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

Oder können Sie --pythonpath Schalter verwenden, oder stellen Sie PYTHONPATH im Voraus.

Verwandte Themen