如何让eclipse/pydev乐于看到windows上的flask扩展?

qlvxas9a  于 2023-03-01  发布在  Eclipse
关注(0)|答案(4)|浏览(191)

我偶然发现了this article,并按照所有步骤操作。但是pyDev看不到我的flask扩展,这真的很烦人。只有一件事(我认为这是关键):
Touch /site-packages/flaskext/__init__.py
我想Touch是一个unix的实用程序,在Windows上有没有等价的?

nkkqxpd9

nkkqxpd91#

Eclipse默认使用模块的静态分析。flask.ext动态构建导入列表。要使用Python shell强制动态分析,请将flask.ext添加到强制内置列表中。
转到Preferences -> PyDev -> Interpreters -> Python Interpreter。选择您的解释器,转到Forced Builtins选项卡。单击New...并输入flask.ext
这需要PyDev通过shell强制分析模块。
有关详细信息,请参见PyDev manual

mkshixfv

mkshixfv2#

我也在纠结这个问题,问题似乎出在Flask导入扩展名的方式上。如果你打开flask/ext/__init__.py文件,你会看到它使用了importer。我不认为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

m528fe3b

m528fe3b3#

如果您的项目在虚拟环境中,并且您希望在eclipse中添加项目,以便项目使用安装在虚拟环境中的库,那么您应该遵循以下步骤。
步骤1:假设虚拟环境的绝对路径为:C:\Users\sadegh\Desktop\flask_eclipse\fe\venv

转到Scripts目录中的window->preferences->PyDev->interpretors->Python Interpretor,有python.exe

,它是已经分配给这个虚拟环境的python解释器,这个可执行文件将是我们将要添加到eclipse中的新python解释器。
步骤2:转到window->preferences->PyDev->Interpreters->Python Interpreter

在右侧窗格中,您将看到:

点击新建按钮,然后弹出此窗口:

Interpreter Name字段中写入您想要的任何内容,并在Interpreter Executable字段中写入步骤1中提到的python.exe文件的绝对路径
点击OK后,将弹出:

选择所有项目然后单击OK
步骤3:在上面的窗格中选择新添加的解释器,然后在下面的窗格中转到Forced Builtin选项卡并单击下面窗格右侧的新建按钮。

在弹出的窗口中写入flask.ext
第四步:一切都已就绪:
如果要开始新项目:当您创建一个新的PyDev Project时,选择我们创建的新解释器作为此项目的解释器。

如果您想将虚拟环境中的现有项目转换为flask项目,请右键单击project并转到properties,然后在PyDev-Interpreter/Grammar中将Interpreter更改为我们创建的新解释器。
注意:如果你想让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__)
7uzetpgm

7uzetpgm4#

touch将创建一个空文件(如果该文件不存在),或更新该文件的修改时间(如果该文件存在)。
为此,命令行中的echo > /site-packages/flashext/__init__.py就足够了(文件不会是空的,但只包含一个换行符,这在语义上与Python是等价的)。

相关问题