通过 NSSM 让 os.environ 与 Python 运行 一起工作

Getting os.environ to work with Python run via NSSM

我卡在环境变量不匹配的问题上。

我 运行 Windows 10 上的 Python 脚本通过名为 NSSM.

的程序

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

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

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

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

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

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

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

编辑:

此外,对于创建新变量:

os.environ['new_var'] = 'text'

嗯,原来我的问题不在这个问题的范围之内。 @Recessive 和@eryksun 谢谢你们 的回答,这让我 "onto the scent".

原来我的问题是使用 Python 路径库的 Path.home()

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

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