0

我被困在环境变量不匹配上。

我通过一个名为NSSM的程序在 Windows 10 上运行 Python 脚本。

在运行时,我执行以下操作:

  1. 从文本文件中加载参数
  2. 使用 .将其内容放入环境中os.environ.setdefault(name, value)
  3. 尝试使用加载环境变量os.environ[name]

结果:我添加的任何变量都没有显示出来。

我不确定为什么我添加的变量不可用。 你能告诉我我做错了什么吗?

一个起点是 NSSM 使用来自 Windows HKLM 注册表的环境变量:(见底部)。我不确定这是否是os.environ看不到相关变量的原因。

4

2 回答 2

1

我过去也遇到过问题os.environ.setdefault。取而代之的是,假设您试图添加到PATH环境变量中,请执行以下操作:

os.environ['PATH'] += ";" + the_path_to_the_file

编辑:

此外,对于创建一个新变量:

os.environ['new_var'] = 'text'
于 2019-05-23T01:29:58.023 回答
1

好吧,事实证明我的问题超出了这个问题的范围。@Recessive 和 @eryksun谢谢你们的回答,它让我“闻到了气味”。

原来我的问题是使用 Python pathlib 的Path.home().

  • 通过命令提示符运行时,它会拉取HOMEPATH环境变量。
  • 通过 NSSM 运行时,它会拉取USERPROFILE环境变量。

这种差异Path.home()是真正的问题。它没有找到环境变量,因为 NSSM 在一个完全不同的文件夹中查找。

于 2019-05-28T21:01:50.760 回答