Conda环境变量与os.environ不一致,含$符号的变量值被截断
Conda环境变量与os.environ不一致,含$符号的变量值被截断
我最近在给Conda环境设置环境变量SOME_VAR时碰到了一个奇怪的问题——这个变量的值是以$开头的。最开始我没给变量值加单引号,在PowerShell里可能因为$的特殊含义导致了静默错误。后来我以为用正确的方式重新赋值就能解决,就在Anaconda PowerShell里执行了这两条命令:
conda env config vars set SOME_VAR='$ValueOfTheVariable!' conda env config vars list -n my_env
Conda返回的结果是正常的,能完整显示SOME_VAR=$ValueOfTheVariable!。但当我在加载了这个环境的Spyder里,通过os.environ获取这个变量时,却只能看到末尾的感叹号:
In [4]: os.environ.get('SOME_VAR') Out[4]: '!'
简单来说,Anaconda里能看到完整的变量值,但Spyder和os模块只能读到!,其他环境变量都是正常一致的。
我已经尝试了不少方法,但都没能解决问题:
- 查阅Conda官方文档
- 在PowerShell中停用并重新加载环境
- 重启Spyder
- 在PowerShell里删除变量后重新赋值
- 在
os中删除变量,然后重启Spyder(但截断后的变量值还是会重新出现) - 在PowerShell里先取消变量设置,再用双引号加反撇号转义
$来重新设置
更奇怪的是,就算我在PowerShell里取消了这个变量的设置,os.environ里依然能读到它,这让我怀疑程序是从别的地方读取的变量值,但我明明只在Conda里设置过这个变量啊。
备注:内容来源于stack exchange,提问作者Eli Johnson
相关产品推荐
相关产品推荐

