在 Github Actions 上使用 Windows 上的 Popen 自定义环境变量

问题描述 投票:0回答:1

我将

Popen
与自定义环境变量一起使用。我的期望是当我运行这样的东西时:

    proc = Popen(
        command,
        universal_newlines=True,
        bufsize=0,
        shell=False,
        env=env,
    )

运行

command
时设置的环境变量正是
env
的内容。然而,当我在 Windows 机器上的 github actions 上运行这个时,(确切地)设置了两个附加变量:
TERM=xterm-256color
HOME=/c/Users/runneradmin
。有趣的是,当我检查
os.environ
before 执行的内容时,主机环境集上有很多变量,除了那两个。

这只发生在 Windows 上(运行

windows-latest
)。在Mac和Linux上,环境正是
env
的内容。

我在这种情况下运行的

command
是输出环境变量的
env

我的问题是,这两个变量从哪里来以及如何摆脱它们?

python python-3.x windows github-actions popen
1个回答
0
投票

这似乎是因为 GH Actions

cmd.exe
并不是真正的
cmd
,而是一个终端模拟器。

您可以通过以下方式验证:

      - name: "Print shell"
        shell: cmd
        run: |
          uname -a
          env

uname -a
(Linux 命令)将打印出如下内容:

MSYS_NT-10.0-20348 fv-az1702-301 3.4.10-87d57229.x86_64 2024-02-14 20:17 UTC x86_64 Msys

MSYS 是一个 Windows 终端模拟器,它提供了许多在 Windows 上构建不同软件的功能,这可能就是 GH Actions 默认使用它的原因。它还允许您在同一终端上运行多个 Linux 命令,例如您提到的

env
命令。

它还会设置一些默认的环境变量,例如

TERM=xterm-256color
,它可以为终端模拟器启用颜色。

然后

Popen()
将尝试使用此默认 cmd,这就是为什么当您运行
env
时会预先设置这些环境变量。

© www.soinside.com 2019 - 2024. All rights reserved.