Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让eclipse/pydev乐于在windows上看到flask扩展?_Python_Eclipse_Flask_Pydev_Flask Extensions - Fatal编程技术网

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

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就足够了。(该文件不会为空,但只包含一

我无意中发现并遵循了所有的步骤。但是pyDev不会看到我的烧瓶扩展,这真的很烦人。只有一件事(我认为这是关键):

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了,所以我不知道。这将为所有项目全局添加解释器,即使所讨论的解释器是特定于项目的解释器。是否有办法添加解释器,使其仅与项目相关?