pycharm中环境变量的设置(解决用os.environ.get得不到设定的环境变量)

本机环境:Mac+pycharm专业版

在flask web开发一书中,电子邮件使用的flask-mail库中,对于邮箱的账号和密码,作者使用的是环境变量:
app.config['MAIL_USERNAME']=os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD']=os.environ.get('MAIL_PASSWORD')

然后在终端Terminal输入:

export MAIL_USERNAME=*********@qq.com

export MAIL_PASSWORD=**************

在终端输入:

echo $MAIL_USERNAME
会发现可以输出值,但是运行程序时任然会出现问题,问题描叙为:

smtplib.SMTPSenderRefused: (503, b'Error: need EHLO and AUTH first !')

然后我在程序中加入了输出中间变量:

#发邮件
def send_mail(to,subject,template,**kwargs):
    print(app.config['MAIL_USERNAME'])
    print(app.config['MAIL_PASSWORD'])
    print(FLASKY_MAIL_SENDER)
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX']+subject,
                  sender=FLASKY_MAIL_SENDER,recipients=[to])
    msg.body = render_template(template+'.txt',**kwargs)
    msg.html = render_template(template+'.html',**kwargs)
    thr = Thread(target=send_sasync_email,args=[app,msg])
    thr.start()
    return thr

然而这三个print的结果都是None,也就是说,我用终端设置的环境变量在程序中用

app.config['MAIL_USERNAME']=os.environ.get('MAIL_USERNAME')

并不能得到。

在广泛的看了dalao们的博客后,我发现问题主要出在pycharm无法使用定义的环境变量(原因不明,有dalao说是因为pycharm 的进程是桌面环境的子进程,终端启动的时候才会读取 .bashrc ,设定的环境变量不是配置在系统级别,所以 pycharm 看不到这个环境变量)

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

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

方法1如下图:

在Environment variables中导入即可。

然后再次print邮箱账号和密码会发现可以其已经有值了,而且邮件也能够正常发送了。

参考资料:https://youtrack.jetbrains.com/issue/PY-17816

猜你喜欢

转载自blog.csdn.net/hrbust_cxl/article/details/86771536
今日推荐