在自学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()依然无法访问到。很想知道为什么,求教,谢谢!
黄舟2017-04-17 17:29:10
まず、変数と環境変数は同じものではないことを理解する必要があります。
set によって設定された変数は、他のプロセスには影響しません。
python os.putenv() なぜ機能しないのかわかりません。
オンラインの記事を見て、直接変更することを提案しました
os.environ は一時変数も作成します。
batch-cn は、bathome によって作成された優れたコマンド ツール パッケージ マネージャーです。お勧めします。
サードパーティのコマンド ツールをダウンロードし、これらのツールを使用してシステム変数 setx.ezxe、conset.exe を変更します
http://batch-cn.qiniudn.com/tool/setx.exe
1 つはレジストリを一括変更して再起動する方法、もう 1 つは WMIC を自分で検索して一括調整する方法です。
上記の 3 つの方法が一般的に使用されます。
Rapid Environment Editor は、非常に優れた環境変数管理ツールです。
バックアップ、インポート、エクスポートができ、コマンド ラインから環境変数を変更することもできます。
伊谢尔伦2017-04-17 17:29:10
これを有効にするには、[マイ コンピュータの環境変数] で手動で設定する必要があります。セット モード設定は、現在のコマンド ウィンドウに対してのみ有効です。この設定は、コマンド ウィンドウを閉じると消えます。