【问题标题】:Pydev and Django: Shell not finding certain modules?Pydev 和 Django:Shell 找不到某些模块?
【发布时间】:2011-02-15 03:52:48
【问题描述】:

我正在 Eclipse 中使用 PyDev 开发一个 Django 项目。有一段时间,PyDev 的 Django Shell 运行良好。现在,它没有:

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

开发服务器运行良好。我可能做错了什么?

models 模块也明显缺席:

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

在 PyDev 之外的普通命令行上,shell 工作正常。

为什么会发生这种情况?

【问题讨论】:

    标签: django pydev django-shell


    【解决方案1】:

    似乎是一个简单的路径问题。这是什么输出:

    import sys; print sys.path
    

    我对 PyDev 一无所知,但可能有一个设置可以将路径添加到 PYTHONPATH 设置。如果没有,可以直接在shell中进行:

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

    【讨论】:

    • 很好的答案。 Pydev 在自动配置时不会添加 .bin 文件夹。谢谢。
    【解决方案2】:

    前段时间,我在从 Django 1.3 移动我的项目并将 settings.py 文件放在我的源代码的根目录,然后将其向下移动到应用程序中时遇到了类似的问题。

    例如,发生的事情是我有以下情况:

    rootOfSource/ - 设置.py - 我的应用程序

    我把它改成了:

    rootOfSource/ - 我的应用 - myapp/settings.py

    我还将我的设置文件更改为以下内容:

    #!/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)
    

    但是,当我调试到 os.eviron 时,我发现 DJANGO_SETTINGS_MODULE 与预期不符,然后我将 manage.py 更改为以下内容:

    #!/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)
    

    这让我可以从 PyDev 运行。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      我通过转到项目属性 -> PyDev Django 并设置 Django 设置模块来解决此问题。

      【讨论】:

        猜你喜欢
        • 2015-02-25
        • 2011-04-01
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 1970-01-01
        • 2013-08-26
        • 2017-10-10
        相关资源
        最近更新 更多