通过 NSSM 让 os.environ 与 Python 运行 一起工作
Getting os.environ to work with Python run via NSSM
我卡在环境变量不匹配的问题上。
我 运行 Windows 10 上的 Python 脚本通过名为 NSSM.
的程序
在 运行 时,我执行以下操作:
- 从文本文件加载参数
- 使用
os.environ.setdefault(name, value)
将其内容放入环境中。
- 尝试使用
os.environ[name]
加载环境变量
结果:我添加的任何变量都没有显示。
我不确定为什么我添加的变量不可用。 你能告诉我我做错了什么吗?
一个起点是 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 正在寻找一个完全不同的文件夹。
我卡在环境变量不匹配的问题上。
我 运行 Windows 10 上的 Python 脚本通过名为 NSSM.
的程序在 运行 时,我执行以下操作:
- 从文本文件加载参数
- 使用
os.environ.setdefault(name, value)
将其内容放入环境中。 - 尝试使用
os.environ[name]
加载环境变量
结果:我添加的任何变量都没有显示。
我不确定为什么我添加的变量不可用。 你能告诉我我做错了什么吗?
一个起点是 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 正在寻找一个完全不同的文件夹。