ModuleNotFoundError: No module named 'flask_wtf'

ModuleNotFoundError: No module named 'flask_wtf'

我已经在这里找到了类似的问题,但找不到具体的解决方案。 我有虚拟环境,已激活并 运行ning,在其中我安装了 flask-wtf 模块,如:

pip install flask-wtf

然后,有一个名为 "test.py" 的脚本,其中包含 from flask_wtf import FlaskForm -> 当它从终端作为

python test.py

出现错误,如

    from flask_wtf import FlaskForm
ModuleNotFoundError: No module named 'flask_wtf'

命令

which flask_wtf

returns 没什么。但是,我可以在 flaskEnv/lib/python3.6/site-packages 文件夹中看到 flask_wtf 文件夹(其中 flaskEnv - 是虚拟环境的目录)。

按照我在网站上找到的建议,运行ning 脚本作为

/home/kosist/Documents/Environments/flaskEnv/bin/python test.py

工作正常 - 脚本执行无误。 但是——为什么会这样?我不想一直输入 python 的完整路径,而且,命令

which python

returns 以下:

/home/kosist/Documents/Environments/flaskEnv/bin/python

所以调用 python 已经引用了那个路径!

此外,如果全局安装了 flask-wtf 模块,则脚本可以通过

sudo pip install flask-wtf

然后我可以运行脚本为

python test.py

一切正常。

有人可以帮忙解释一下,这是怎么回事,如何解决?因为恐怕我遗漏了一些关于从 virtualenv 调用模块的简单关键点,并且任何可能安装的模块都可能发生类似情况。

您可以使用以下方法验证安装了哪些包:

pip freeze

您还可以通过以下方式验证 pip 在虚拟环境中是否 运行:

pip -V

这最后一条命令会输出当前虚拟环境的路径,我建议你先验证你是否真的在使用虚拟环境,安装 flask-wtf 然后验证 flask-wtf 是使用 pip freeze 安装。

终于找到原因了——我忘记了,我在 ~/.bash_aliases 文件中指定了 python3.6 的别名...所以在这种情况下命令

which python

返回虚拟环境 python 的路径,但调用

python

称为python3.6,全局安装... 删除 ~/.bash_aliases 文件后,一切正常。