2016-11-10 3 views
0

Quand je lance django-admin avec interrupteur --settings, il échoue:Comment puis-je dire à django-admin quel module de paramètres utiliser?

(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 

Mais manage.py fonctionne très bien. Pour être clair, j'aimerais avoir settings.py supplémentaire pour l'environnement de développement.

En outre, l'importation des paramètres de ce script:

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

fonctionne aussi.

Répondre

0

Eh bien, the doc dit en effet:

manage.py fait la même chose que django-admin mais prend soin de quelques choses pour vous:

  • Il met le paquet de votre projet sur sys.path.

  • Il définit la variable d'environnement DJANGO_SETTINGS_MODULE de sorte qu'elle pointe vers le fichier settings.py de votre projet.

Mais il dit aussi:

Si vous devez basculer entre plusieurs paramètres Django fichiers, utilisez django-admin avec DJANGO_SETTINGS_MODULE ou l'option de ligne de commande --settings.

Et tous les exemples sont le long des lignes suivantes:

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

La chose est que cela fonctionne your project dir must be in sys.path. Et une façon d'y parvenir est:

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

Ou vous pouvez utiliser --pythonpath commutateur ou mis PYTHONPATH à l'avance.