我偶然发现了这篇文章并遵循了所有步骤。但是 pyDev 不会看到我的烧瓶扩展,这真的很烦人。只有一件事(我认为这是关键):
Touch /site-packages/flaskext/__init__.py
Touch
我认为是一个unix util。在 Windows 上是否有与此等价的功能?
Eclipse 默认使用模块的静态分析。flask.ext
动态构建导入列表。要使用 Python shell 强制动态分析,请添加flask.ext
到强制内置列表。
去Preferences -> PyDev -> Interpreters -> Python Interpreter
。选择您的口译员,转到Forced Builtins
选项卡。单击New...
并输入flask.ext
。
这需要 PyDev 通过 shell 强制分析模块。
有关更多详细信息,请参阅PyDev 手册。
我也在为此苦苦挣扎,问题似乎在于 Flask 导入扩展的方式。如果您打开flask/ext/__init__.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 导入也坏了,所以不要db.Column
按照文档中的说明进行操作,而是直接使用 sqlalchemy 导入,即from sqlalchemy import Column, ForeignKey
如果您的项目位于虚拟环境中,并且您希望在 eclipse 中添加该项目,以便该项目使用安装在虚拟环境中的库,那么您应该按照以下步骤操作。
第 1 步:假设您的虚拟环境的绝对路径是:
C:\Users\sadegh\Desktop\flask_eclipse\fe\venv
在目录window->preferences->PyDev->interpretors->Python Interpretor
中Scripts
,有python.exe
哪个是分配给这个虚拟环境的python解释器。这个可执行文件将是我们将添加到 eclipse 中的新 python 解释器。
第2步:转到window->preferences->PyDev->Interpreters->Python Interpreter
在该字段中写入您想要的任何内容并在该字段中Interpreter Name
写入步骤1中提到的python.exe文件的绝对路径Interpreter Executable
选择所有项目然后单击OK
第三步:在上面的窗格中选择新添加的解释器,然后在下面的窗格中转到Forced Builtin
选项卡并单击下面窗格右侧的新按钮。
并在弹出的窗口中写入flask.ext
。
step4:现在一切都设置好了:
如果你想开始一个新项目:当你创建一个新项目时,PyDev Project
选择我们创建的新解释器作为这个项目的解释器。
如果您想将现有项目转换为虚拟环境中的烧瓶项目,请右键单击项目并转到属性并将PyDev-Interpreter/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__)
touch
如果不存在则创建一个空白文件,如果存在则更新文件的修改时间。
为此,echo > /site-packages/flashext/__init__.py
在命令行中就足够了。(该文件不会为空,而只包含一个换行符,它在语义上与 Python 等效)。