我偶然发现this article并遵循了所有步骤。但pyDev不会看到我的烧瓶扩展,这真的很烦人。只有一件事(我认为这是关键):
Touch /site-packages/flaskext/__init__.py
Touch
是一个unix工具。在Windows上是否有相同的功能?
答案 0 :(得分:26)
Eclipse默认使用模块的静态分析。 flask.ext
动态构建导入列表。要使用Python shell强制进行动态分析,请将flask.ext
添加到强制内置列表中。
转到Preferences -> PyDev -> Interpreters -> Python Interpreter
。选择您的口译员,转到Forced Builtins
标签。点击New...
,然后输入flask.ext
。
这需要PyDev通过shell强制分析模块。
有关详细信息,请参阅PyDev manual。
答案 1 :(得分:2)
我也在努力解决这个问题,这个问题似乎与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 import,即from sqlalchemy import Column, ForeignKey
答案 2 :(得分:1)
如果您的项目位于虚拟环境中,并且您希望在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
字段中写下您想要的任何内容,并编写Interpreter Executable
字段
选择所有项目,然后点击OK
步骤3:在上面的窗格中选择新添加的解释器,然后在下面的窗格中转到Forced Builtin
选项卡,然后单击此下方窗格右侧的新按钮。
并在弹出的窗口中写下flask.ext
。
第4步:现在一切都已设定:
如果你想开始一个新项目:
当您创建新的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__)
答案 3 :(得分:0)
touch
将创建一个空白文件(如果该文件不存在),或者如果该文件存在则更新该文件的修改时间。
为此,命令行中的echo > /site-packages/flashext/__init__.py
就足够了。 (该文件不会为空,但只包含一个在语义上与Python等效的换行符。)