我想知道是否有人能解释一下以下奇怪的行为:
我有一个使用os.environ的python脚本来提取用于pysftp的环境变量。该变量被称为"sftp_wd“和"sftp_wdir”,值为"/etc/“,两者的效果是相同的。
>>> import os
>>> os.environ["sftp_wdir"]cmd中的python代码生成正确的值:/etc/...
但是,当在git中运行时,其值如下所示:<%USERPROFILE%/AppData/Local/Programs/Git>/etc/...
在这两种情况下,我都使用相同的conda环境,并且在vscode调试器中运行时效果也会显示出来。另外,如果使用winpty运行python,我看不到这种效果。我看过关于os.environ的文档和git使用的环境变量,但没有找到任何解释这一点的东西。
printenv也显示正确的值,所以我倾向于相信这是特定于git初始化python的方式,但我似乎无法确定实际发生的事情
编辑:作为对@CharlesDuffy的响应,这似乎可以用任何环境变量和以"/“开头的任何值复制,例如,我创建了一个名为/var/的环境变量,名为/var/。结果如下:
回波
$ echo $random
/var/printf
$ printf '%q\n' "$random"
/var/python
$ python
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Ana
conda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['random']
'C:/Program Files/Git/var/'
>>>注意:从上面到" Git“文件夹的路径的更改是从更新到v2.33.0.2-64位的Git Bash。不过,问题仍然是一样的。
发布于 2021-09-22 16:58:21
这是用于编译Git Bash的Windows兼容性库msys的行为。有关此行为的文档位于https://www.msys2.org/docs/filesystem-paths/。
可以使用环境变量来关闭它:
要完全关闭环境变量中的自动路径转换,导出MSYS2_ENV_CONV_EXCL='*'
random:export MSYS2_ENV_CONV_EXCL=random的变量关闭
https://stackoverflow.com/questions/69286095
复制相似问题