Python跨文件访问环境变量返回None?求技术指导
问题解答
为什么运行file1.py返回None?
每个Python程序运行时都会启动一个独立的进程,进程的环境变量是进程私有的。你单独运行file2.py时,它只是在自己的进程里设置了num这个环境变量,进程结束后这个变量就消失了;而单独运行file1.py时,它的进程里根本没设置过num,所以os.getenv("num")自然返回None。
实现file1.py访问file2.py设置的环境变量的方法
方法1:在file1中导入file2
让file2的代码在file1的进程内执行,这样环境变量会被设置到当前进程中:
修改file1.py:
import os import file2 # 导入file2,执行其中的环境变量赋值逻辑 y = os.getenv("num") print(y)
直接运行python file1.py就能输出7。
方法2:通过shell先设置环境变量再运行file1
如果不想在代码里耦合,可以在命令行先设置环境变量,再启动file1(环境变量会被传递给Python进程):
- Linux/macOS终端:
export num=7 && python file1.py
- Windows命令提示符:
set num=7 && python file1.py
方法3:让file2作为父进程启动file1
修改file2.py,让它设置环境变量后启动file1子进程,子进程会继承父进程的环境变量:
import os import subprocess os.environ["num"] = "7" # 启动file1子进程 subprocess.run(["python", "file1.py"])
运行python file2.py,就能看到file1输出7。
内容的提问来源于stack exchange,提问作者Amna
相关产品推荐
相关产品推荐

