在eclipse + PyDev下使用Flask框架进行编程时,我注意到IDE中的自动组织导入功能(用Ctrl + O调用)有时会阻碍。防止PyDev移动特定的导入
这与Flask处理需要将视图代码拆分为多个模块或包的方式有关。基本上,如果你有一个views.py
模块包含您的请求处理:
from myapp import app
@app.route('/')
def root():
return "Hello world"
和您的瓶应用在__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单独离开这个特定的导入,一种基于每个文件关闭导入组织的方式,或者类似的东西?
这个解决方法在PyDev中工作...我必须说我发现它比它必须使用的原因 - 即:围绕循环导入:) –
它不仅限于这种解决方法,而且还更多类型的“导入攻击”,如“sys.path”操作。 – Xion