防止PyDev移动特定的导入

时间:2012-01-19 17:38:51

标签: python pydev flask

在eclipse + PyDev下编程并使用Flask框架时,我注意到IDE中的自动组织导入功能(使用 Ctrl + O 调用)有时会妨碍。

这与Flask处理将视图代码拆分为多个模块或包的需要有关。基本上,如果您有一个包含请求处理程序的views.py模块:

from myapp import app

@app.route('/')
def root():
    return "Hello world"

您的Flask应用已在__init__.py中定义:

from flask import Flask

app = Flask('MyApp')
app.config.from_pyfile('config.py')

@app.before_request
def before_request(): pass # omitted for brevity

@app.teardown_request
def teardown_request(): pass # omitted for brevity

您需要在后一个文件的末尾 import views ,才能将视图函数添加到Flask的路由表中。由于views.py导入__init__.py以访问app变量,因此会导致循环导入。但它工作得很好,实际上是一种既定的做法,如suggested by documentation

不幸的是,PyDev对此技术一无所知。我们是否应该意外地触发组织__init__.py的导入(这并不罕见,考虑到这个选项通常有用),PyDev很乐意将关键的import views移到顶端。当然,这会导致不正确(无法解决)循环导入,以及恼人的运行时错误。

有没有办法防止这种情况发生 - 比如#@Directive会告诉PyDev单独保留这个特定的导入,一种关闭每个文件的导入组织的方法,或类似的东西?

1 个答案:

答案 0 :(得分:1)

我不使用PyDev,但你试过抛弃它的导入解析器吗?这很脏,但你可以尝试类似的东西:

if 1: import views

由于该行不以“import”开头,因此PyDev可能会将其传递过来吗?