【问题标题】:PyDev and Django: PyDev breaking Django shell?PyDev 和 Django:PyDev 打破 Django 外壳?
【发布时间】:2010-04-30 17:11:02
【问题描述】:

我建立了一个新项目,并用简单的模型填充它。 (基本上我在关注tut。)

当我在命令行上运行python manage.py shell 时,它工作正常:

>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()
[]

效果很好。然后,我尝试在 Eclipse 中做同样的事情(使用由相同文件组成的 Django 项目。)

右击mysite项目>> Django >> Shell 与 Django 环境

这是 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

我在这里做错了什么?

【问题讨论】:

  • 你能把你的数据库文件的路径和DATABASE_NAMEsettings.py中的设置贴出来吗?

标签: python django pydev


【解决方案1】:

错误是关于没有打开数据库文件。所以我猜你的 settings.py 中的数据库路径是一个相对路径,并且 PyDev 使用与你通常使用的不同的当前目录启动 shell。

如果是这种情况,请将DATABASE_NAME 设置更改为绝对路径,它应该可以工作。

【讨论】:

  • 那是正确的。此外,PyDev 给了我未解决的 Django 模块导入错误。我该如何解决?
  • @Rosarch:您发布的输出显示 Django 已成功导入,所以我不知道为什么您在导入 Django 模块时会出错。
  • @Rosarch,我之前也遇到过未解决的问题。如果我没记错的话,您需要在 PyDev 首选项中启用“自动构建”。对于其他系统模块,在您第一次创建解释器时已经完成。如果没有“自动构建”,则需要在解释器设置中重新应用(基本上是重新扫描 python 路径)。
  • 使用os.getcwd() 发现当前目录改成了HOME。谢谢!
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 2017-06-20
  • 1970-01-01
  • 2011-05-10
  • 1970-01-01
  • 2018-07-24
  • 2011-08-11
  • 2019-06-26
相关资源
最近更新 更多