学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑

环境: windows,pycharm 专业版,python虚拟环境venv 

更新: 可以看看我新写的,没报错也收不到邮件的另一个原因:TESTING变量大坑


背景:照着书上一步一步来,一直到在flask shell 发送邮件测试环境,一直很成功。但是在代码中去集成发邮件的功能,却一直收不到邮件。
在网上搜索了一番无果(主要是这个邮件收不到的问题太宽泛了),本着重启能解决99%问题的真理,我把pycharm整个关了重启一遍。

谁知道连在flask shell测试都发不出去邮件了,打印app.config[‘MAIL_USERNAME’] 显示为None,原来是环境变量没有传进来。可是明明用set MAIL_USERNAME = ×××命令在pycharm的terminal窗口设置了(我知道关闭窗口环境变量会失效,所以又设置了一遍),用set命令查看所有环境变量,MAIL_USERNAME也在里面,怎么到flask shell里面就读不到了呢?重启后程序不能复现,这是个很严重的问题!

解决思路: 想起来昨天写的文章末尾一个参考博客: 参考1 的末尾说

“在windows下,在PyCharm的Terminal中设置环境变量,不行!!后来,在cmd命令下设置,关闭当前窗口后,就会失效,最关键的问题是在pycharm中无法获取”

昨天才学到flask shell测试邮件,跟着书上实践,在pycharm的terminal设置环境变量就可以成功在flask shell 中读到,就没想这么多。今天在程序中集成失败,突然就想到了这里,再加上重启pycharm后,即使又在terminal设置了环境变量,在flask shell 竟然读不到!?(至于昨天怎么成功读到的,都是玄学)对,就是pycharm无法获取环境变量的问题!

于是按照他的第二种方法,在pycharm的任务栏顶部Run -> Edit Configurations -> Environment variables 添加MAIL_USERNAME、MAIL_PASSWORD,FLAKSY_ADMIN环境变量。重启pycharm,打开terminal,启动flask shell,打印app.config[‘MAIL_USERNAME’] 竟然还是None!!!

挠破脑袋,怎么照着别人做还是不行?

  • 继续搜索,看到这篇

参考2

原因:terminal是pycharm集成的一个tools,那么他就需要设置一个应用来运行,就跟pycharm一样,他也是一个工具,需要python来编译执行。

虽然没针对我的问题,但是给了我一些启示:是不是要为terminal单独设置环境变量?

  • 继续搜索,看到这篇

参考3 的最后

参考链接里在pycharm中添加环境变量,而不是在系统中添加,这种方法我这不行,还是获取不到

对,我跟他一样,我也获取不到,于是去翻他结尾附上的参考链接:
参考4

于是乎我们得寻找在pycharm中定义环境变量的方法:

  1. Preference -> Build, Execution, Deployment -> Console -> Python Console 下最上面可设置环境变量
  2. 任务栏顶部的 Run -> Edit Configurations 里面有个 Environment Variables

我突然想到,pycharm这么多地方可以设置环境变量,是不是这些地方各自管各自的环境变量,不会互通。在哪里运行就需要设置哪里的环境变量

比如,设置terminal的环境变量,只在terminal中生效(因为在terminal启动flask shell,所以flask shell也可以读到), 而在Python Console读不到。想要在 Python Console读到,就去设置 Python Console的环境变量。同理,上述两个地方设置的环境变量,在代码程序中读不到,需要去任务栏顶部`Run -> Edit Configurations -> Environment variables 这里设置。下面逐步验证:

  1. 设置Python Console的环境变量学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第1张图片
    点击右下方的apply,Python Console可以读到:
    学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第2张图片

  2. 设置terminal中的环境变量学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第3张图片
    点击右下方的apply,打开terminal内flask shell ,读取成功
    学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第4张图片
    且用flask shell 成功发送邮件!
    学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第5张图片

  3. 为启动程序设置:任务栏顶部Run -> Edit Configurations -> Environment variables
    学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第6张图片
    点击右下方的apply,运行代码,表单接收到新的名字,成功收到邮件!!!
    学习狗书(flask web开发)没有报错,代码也没误写,但是邮件还是一直收不到 -----pycharm环境变量设置大坑_第7张图片

总结:花了一上午的时间,弄清楚了pycharm这个坑。
如果你前面稀里糊涂、歪打正着混过去了,后面的学习中再碰到这种坑,还是会绊住你!玄学,不能复现的指令不容小觑!

你可能感兴趣的:(flask,pycharm,python)