【问题标题】:Eclipse/PyDev/Django Import Requires Project NameEclipse/PyDev/Django 导入需要项目名称
【发布时间】:2012-01-09 20:57:37
【问题描述】:

在 Django 中开发一个项目,我的 IDE 设置为带有 PyDev 的 Eclipse。以下导入语句:

from polls.models import Poll, Choice

通过以下方式从命令行运行项目时有效:

python manage.py runserver

但是,Eclipse 内置的错误检查无法找到 polls.models(“未解析的导入端口”)。我可以通过在类之前添加项目名称然后运行它来解决这个问题。也就是做import语句:

from projectName.polls.models import Poll, Choice

问题是我正在与项目合作,但不能这样做。

问题是:有没有办法让 Eclipse 自动检测或假设 import 语句中的 projectName?

【问题讨论】:

  • 为项目命名是正确的做法(tm)。隐式相对导入是由纯粹的邪恶构成的。
  • 谢谢,团队成员同意。对 Django 来说是全新的,所以我们仍在定义约定。
  • 你也可以在项目设置中戳 PYTHONPATH 来解决这个问题。
  • 使用 projectName 不是一个好主意。永远不要这样做。它有时肯定会反击。这绝对不是“正确的做法”。始终创建新应用并将其放在 PYTHONPATH 上的某个位置。而不是“从 appName 导入”。但这就是你已经在做的事情。我会在下面回答。
  • 我只会将项目名称放在单个文件(如 WSGI)中,即项目上方的一个目录。然后在整个项目中使用显式的相对导入 (from __future__ import absolute_import + from .polls.models import Poll, Choice)。

标签: django eclipse import pydev


【解决方案1】:

在 import 语句中使用 projectName 不是一个好主意。

使用 django/python 开始使用 virtualenv。尤其是在使用 eclipse/pydev 时。您可以为每个 virtualenv 配置一个新的解释器。只需将 virtualenv 添加到“Preferences > PyDev > Interpreter - Python”下的解释器列表中,并确保将您的 djangoproject 根添加到同一首选项页面上的 PYTHONPATH。

这本质上是 django 从命令行运行时为您所做的。

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多