2010-04-30 8 views
2

J'ai mis en place un nouveau projet, et l'ai peuplé avec des modèles simples. (Essentiellement que je suis le tut.)PyDev et Django: PyDev brise le shell Django?

Quand je lance python manage.py shell sur la ligne de commande, il fonctionne très bien:

>python manage.py shell 

Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on 
win32 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from mysite.myapp.models import School 
>>> School.objects.all() 
[] 

Fonctionne très bien. Ensuite, j'essaie de faire la même chose dans Eclipse (en utilisant un projet Django qui est composé des mêmes fichiers.)

Faites un clic droit sur le projet monsite >> Django >> Shell avec l'environnement Django

Ceci est la sortie de la console PyDev:

>>> 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) 
'path\\to\\mysite' 
>>> from mysite.myapp.models import School 
>>> School.objects.all() 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 68, in __repr__ 
    data = list(self[:REPR_OUTPUT_SIZE + 1]) 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 83, in __len__ 
    self._result_cache.extend(list(self._iter)) 
    File "C:\Python26\lib\site-packages\django\db\models\query.py", line 238, in iterator 
    for row in self.query.results_iter(): 
    File "C:\Python26\lib\site-packages\django\db\models\sql\query.py", line 287, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "C:\Python26\lib\site-packages\django\db\models\sql\query.py", line 2368, in execute_sql 
    cursor = self.connection.cursor() 
    File "C:\Python26\lib\site-packages\django\db\backends\__init__.py", line 81, in cursor 
    cursor = self._cursor() 
    File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line 170, in _cursor 
    self.connection = Database.connect(**kwargs) 
OperationalError: unable to open database file 

ce que je fais mal ici?

+0

Pouvez-vous publier le chemin d'accès à votre fichier de base de données et le paramètre 'DATABASE_NAME' dans' settings.py'? –

Répondre

3

L'erreur consiste à ne pas ouvrir le fichier de base de données. Donc je suppose que le chemin vers la base de données dans votre settings.py est un chemin relatif, et PyDev démarre le shell avec un répertoire courant différent de celui que vous utilisez normalement.

Si tel est le cas, remplacez le paramètre DATABASE_NAME par un chemin absolu et cela devrait fonctionner.

+0

C'était correct. En outre, PyDev me donne des erreurs d'importation non résolues pour les modules Django. Comment puis-je résoudre ce problème? –

+0

@Rosarch: La sortie que vous avez affichée montre que Django a été importé avec succès, donc je ne sais pas pourquoi vous auriez des erreurs en important des modules Django. – interjay

+0

@Rosarch, j'avais aussi le problème non résolu auparavant. Vous devez activer "auto build" dans les préférences PyDev si je m'en souviens correctement. Pour les autres modules du système, cela a déjà été fait lorsque vous avez créé votre interpréteur pour la première fois. Sans "auto build", vous devez réappliquer (fondamentalement rescanner le chemin python) dans les paramètres de l'interpréteur. – Dingle