2010-05-03 5 views
2

Je développe un projet Django avec PyDev dans Eclipse. Pendant un certain temps, Django Shell de PyDev a bien fonctionné. Maintenant, il ne le fait pas:Pydev et Django: Shell ne trouve pas certains modules?

>>> import sys; print('%s %s' % (sys.executable or sys.platform, sys.version)) 
C:\Python26\python.exe 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] 
>>> 
>>> from django.core import management;import mysite.settings as settings;management.setup_environ(settings) 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
ImportError: No module named mysite.settings 
>>> 

Le serveur dev fonctionne très bien. Que pourrais-je faire de mal?

Le module modèles est également brillé par leur absence:

>>> import mysite.myapp.models 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
ImportError: No module named mysite.myapp.models 

Sur la ligne de commande normale, en dehors de PyDev, le shell fonctionne très bien.

Pourquoi cela est-il possible?

Répondre

5

Cela ressemble à un problème de chemin simple. Quelle est la sortie de cette:

import sys; print sys.path 

Je ne sais pas quoi que ce soit au sujet PyDev, mais il y a probablement un paramètre quelque part pour ajouter des chemins dans la mise en PYTHONPATH. Sinon, vous pouvez le faire directement dans la coquille:

sys.path.insert(0, '/path/to/directory/containing/mysite/') 
+0

Bonne réponse. Pydev n'ajoute pas le dossier .bin lors de la configuration automatique. Merci. –

3

J'ai eu un problème similaire à celui il y a un certain temps tout en se déplaçant mon projet de Django 1.3 et ayant le fichier settings.py à la racine de ma source et puis le déplaçant vers le bas dans l'application.

Par exemple ce qui est arrivé est que j'avais les suivantes:

rootOfSource/ - settings.py - monapp

et je l'ai changé pour être:

rootOfSource/ - monapp - myapp/settings.py

et j'ai également changé mon fichier de paramètres pour être le suivant:

#!/usr/bin/env python 
import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

Cependant quand je débogués dans le os.eviron je trouve que le DJANGO_SETTINGS_MODULE était pas comme prévu, je puis changé mon manage.py être les suivants:

#!/usr/bin/env python 
import os 
import sys 

if __name__ == "__main__": 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
    os.environ.__setitem__("DJANGO_SETTINGS_MODULE", "myapp.settings") 
    from django.core.management import execute_from_command_line 

    execute_from_command_line(sys.argv) 

Ce qui m'a alors permis de courir de PyDev.

Espérons que cela aide.

0

J'ai corrigé ce problème en allant dans les propriétés du projet -> PyDev Django et en paramétrant le module de paramétrage Django. enter image description here

Questions connexes