manage.py syncdb utilise la firebase database d’un autre projet dans virtualenv

J’ai 2 sites, dans le même env virtuel, dans 2 Apache VirtualHosts différents.

Lorsque je lance python manage.py syncdb , il dit:

 Creating tables ... Installing custom SQL ... Installing indexes ... Installed 0 object(s) from 0 fixture(s) 

Lorsque je lance python manage.py inspectdb > somefile.txt , les détails de l’autre site apparaissent dans somefile.txt .

Donc, python manage.py appelle le fichier /var/www/venv/proj1/manage.py même lorsque je suis assis dans le répertoire de: `/ var / www / venv / proj2 /`. Une raison pour laquelle cela causerait ceci ou comment le diagnostiquer?

manage.py:

 #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj1.settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) 

Et voici comment j’ai vérifié $ PYTHONPATH:

 # $PYTHONPATH -bash: /var/www/virtualenv-2.7/proj1:/var/www/virtualenv-2.7/proj2:: No such file or directory 

Et ceci est .bash_profile :

 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH PYTHONPATH=/var/www/virtualenv-2.7/proj2:$PYTHONPATH PYTHONPATH=/var/www/virtualenv-2.7/proj1:$PYTHONPATH export PYTHONPATH export DJANGO_SETTINGS_MODULE="proj2.settings" #possibly the issue? 

Votre problème est que votre PYTHONPATH a proj1 répertorié avant proj2 . Dans ce cas, python va d’abord regarder dans proj1 pour manage.py et l’exécuter, et ignorer le manage.py dans le répertoire actuel, même s’il existe.

Comme solution rapide, ajoutez le répertoire actuel à PYTHONPATH comme ceci:

 PYTHONPATH=/var/www/virtualenv-2.7/proj2 PYTHONPATH=/var/www/virtualenv-2.7/proj1:$PYTHONPATH PYTHONPATH=.:$PYTHONPATH export PYTHONPATH 

Cela va d’abord vérifier le script que vous recherchez dans le répertoire en cours.

De plus, sauf si vous avez un objective spécifique en tête, vous pouvez perdre les chemins spécifiques au projet et toujours lancer manage.py partir du répertoire approprié.