在cmd中设置了环境变量,进入python后失效如何解决?

发布于 2022-09-02 11:36:26 字数 542 浏览 12 评论 0

在自学flask-mail,其中一步是从环境变量中获取邮箱帐号和密码,后来发现无法获取,在venv环境下,cmd测试如下:

set MAIL_USERNAME = 'XXXX'
set MAIL_USERNAME

会显示XXXX,表明设置成功,然后我在cmd里输入

python hello.py shell
import os
print(os.environ.get('MAIL_USERNAME'))

显示None,表明MAIL_USERNAME为空

后来通过查询,这其实是在读取系统的环境变量。而set的方法(linux下是export)是设置临时环境变量,cmd(或bash)一关闭就会丢失。但临时变量在linux似乎是允许不同的程序使用,只是bash之间相互独立,而在win下用set设置的“临时变量”,一进入python shell就用不了了,所以应该叫“普通环境变量”而不是“临时环境变量”。然而,我在系统里设置了永久的环境变量,用os.environ.get()依然无法访问到。很想知道为什么,求教,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜唯美灬不弃 2022-09-09 11:36:26

你先搞清楚,变量,环境变量,不是一个东西.
set设置的变量,对其它进程不生效.

python os.putenv() 我不知道为什么不生效.
看到网上有文章建议直接改

 os.environ['aaaa']='test'
 os.environ['aaaa']
'test'

os.environ创建的也是临时变量.

batch-cn是个不错的命令工具包管理器.bathome出品,推荐一下.

下载第三方命令工具,用这些工具修改系统变量,setx.ezxe,conset.exe
http://batch-cn.qiniudn.com/tool/setx.exe

一种是批处理改注册表重启,一种是批处理调WMIC.你自己搜索看看吧.

常用的应该就是以上三种方法.

Rapid Environment Editor 是一个非常好的,环境变量管理工具.
备份,导入导出,也可以以命令行的方式修改环境变量.

终陌 2022-09-09 11:36:26

你要在我的电脑-环境变量手动设置才有效,这是全局的。set方式设置只对当前的命令窗口有效,关闭命令窗口就没有了,这样设置有作用域的。

枕梦 2022-09-09 11:36:26

找到你的~/.vimrc,在里面修改,然后source一下,具体百度下~~set只是对当前窗口临时生效

逆流 2022-09-09 11:36:26

名字相同吗?看你问题里边名字是不同的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文