Python 防止PyDev移动特定导入

Python 防止PyDev移动特定导入,python,pydev,flask,Python,Pydev,Flask,在eclipse+PyDev下编程并使用Flask框架时,我注意到IDE的自动组织导入功能(使用Ctrl+O调用)有时会遇到阻碍 这与Flask处理将视图代码拆分为多个模块或包的需要的方式有关。基本上,如果您有一个包含请求处理程序的views.py模块: from myapp import app @app.route('/') def root(): return "Hello world" 您的Flask应用程序在\uuuu init\uuuuu.py中定义: from flas

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

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

from myapp import app

@app.route('/')
def root():
    return "Hello world"
您的Flask应用程序在
\uuuu init\uuuuu.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
您需要在后一个文件的末尾导入视图,以便将视图函数添加到Flask的路由表中。由于
views.py
导入
\uuuu init\uuuu.py
以访问
app
变量,因此会导致循环导入。不过,它工作得很好,事实上,它也是一种既定的做法

不幸的是,PyDev对这种技术一无所知。如果我们意外地触发了为
\uuuu init\uuuuu.py
组织导入(鉴于此选项通常非常有用,这并不少见),PyDev将很高兴地将关键的
导入视图移动到顶部。当然,这会导致不正确的(无法解决的)循环导入,以及恼人的运行时错误


有没有一种方法可以防止这种情况发生?比如告诉PyDev不要进行这种特定的导入的
#@指令
,有没有一种方法可以关闭基于每个文件的导入组织,或者类似的方法?

我不使用PyDev,但是你试过扔掉它的导入解析器吗?这很脏,但您可以尝试以下方法:

if 1: import views

由于该行不是以“import”开头的,因此PyDev可能会跳过它?

此解决方案在PyDev中确实有效。。。我必须说,我发现它没有使用它的原因那么肮脏——即:围绕循环导入工作:)它不仅限于这种解决方法,还包括更多类型的“导入黑客”,例如
sys.path
操作。