Python 如何让eclipse/pydev乐于在windows上看到flask扩展?
我无意中发现并遵循了所有的步骤。但是pyDev不会看到我的烧瓶扩展,这真的很烦人。只有一件事(我认为这是关键):Python 如何让eclipse/pydev乐于在windows上看到flask扩展?,python,eclipse,flask,pydev,flask-extensions,Python,Eclipse,Flask,Pydev,Flask Extensions,我无意中发现并遵循了所有的步骤。但是pyDev不会看到我的烧瓶扩展,这真的很烦人。只有一件事(我认为这是关键): Touch/site packages/flaskext/________.py Touch我认为是一种unix工具。Windows上是否有与此等效的文件?touch将在文件不存在时创建一个空白文件,或者在文件存在时更新文件的修改时间 为此,命令行中的echo>/site packages/flashxt/\uuuu init\uuuuuu.py就足够了。(该文件不会为空,但只包含一
Touch/site packages/flaskext/________.py
Touch
我认为是一种unix工具。Windows上是否有与此等效的文件?touch
将在文件不存在时创建一个空白文件,或者在文件存在时更新文件的修改时间
为此,命令行中的
echo>/site packages/flashxt/\uuuu init\uuuuuu.py
就足够了。(该文件不会为空,但只包含一个换行符,在语义上与Python相当)。我也在努力解决这个问题,问题似乎在于Flask导入扩展的方式。如果打开flask/ext/_init\u uuuuuy.py
文件,您将看到它使用导入器。我认为PyDev不太喜欢这个,所以我用固定导入编辑了这个文件:
import flask_login as login
import flask_sqlalchemy as sqlalchemy
import flask_wtf as wtf
def setup():
from ..exthook import ExtensionImporter
importer = ExtensionImporter(['flask_%s', 'flaskext.%s'], __name__)
importer.install()
setup()
del setup
我还发现Flask SQLAlchemy导入也坏了,所以Eclipse默认使用模块的静态分析,而不是像文档中解释的那样直接使用SQLAlchemy导入,即SQLAlchemy导入列中的ForeignKey
flask.ext
动态构建导入列表。要使用Python shell强制进行动态分析,请将flask.ext
添加到强制内置列表中
转到首选项->PyDev->解释器->Python解释器
。选择您的解释器,转到强制内置
选项卡。单击New…
并输入flask.ext
这需要PyDev通过shell强制分析模块
有关更多详细信息,请参阅。如果您的项目位于虚拟环境中,并且希望在eclipse中添加该项目,以便该项目使用安装在虚拟环境中的库,则应遵循以下步骤 步骤1: 假设虚拟环境的绝对路径是:
C:\Users\sadegh\Desktop\flask\u eclipse\fe\venv
转到窗口->首选项->PyDev->解释器->Python解释器
在Scripts
目录中,有python.exe
这是已分配给此虚拟环境的python解释器。这个可执行文件将是我们将添加到eclipse的新python解释器
步骤2:
转到窗口->首选项->PyDev->解释器->Python解释器
在右侧窗格中,您将看到以下内容:
单击“新建”按钮,将弹出此窗口:
在解释器名称
字段中写入所需的任何内容,并在解释器可执行文件
字段中写入步骤1中提到的python.exe文件的绝对路径
单击OK
后,将弹出:
选择所有项目,然后单击OK
步骤3:在上面的窗格中选择新添加的解释器,然后在下面的窗格中转到Forced Builtin
选项卡并单击下面窗格右侧的new按钮
在弹出的窗口中写入flask.ext
步骤4:现在一切都设置好了:
如果要启动新项目,请执行以下操作:
创建新的PyDev项目时
选择我们创建的新解释器作为该项目的解释器。
如果要将虚拟环境中的现有项目转换为flask项目,请右键单击项目并转到属性,然后在PyDev解释器/Grammar
中将解释器更改为我们创建的新解释器
注意:如果希望eclipse在虚拟环境中为您运行服务器,您可以从包含Flask()实例的代码中运行服务器,如下所示:
if __name__ == '__main__': #here i assume you have put this code in a file that
app.run() #contains variable "app", which contains the instance of #Flask(__main__)
谢谢,但是在eclipse中恢复python解释器后,问题仍然存在。这看起来很有希望。同时,我切换到PyCharm,所以我不能(也不想)自己测试这个。但是,我会将此问题标记为已解决,因为您正在参考官方文档。这将修复我安装的任何flask.ext模块的未解决导入。将Flask模块添加到Python路径并没有修复未解析的导入。这看起来很有希望,但在Mac OS X 10.11上的LiClipse 3.6.0中对我不起作用。可能是LiClipse中捆绑的PyDev中的一个bug?@JimDeLaHunt我不再使用PyDev了,所以我不知道。这将为所有项目全局添加解释器,即使所讨论的解释器是特定于项目的解释器。是否有办法添加解释器,使其仅与项目相关?