使用 bash 脚本导出的环境变量无法在 python 中访问

Environment variable exported using bash script not accessible in python

我有两个文件:

  1. run.sh
  2. train.py

两个文件的内容 在 run.sh

export TRAINING_DATA=test1
export FOLD=test2
python.exe train.py

在train.py

from os import environ
print(environ.get("TRAINING_DATA"), environ.get("FOLD"))

当我通过命令行 运行 bash 文件时

bash run.sh

我得到的不是 test1 和 test2,而是 None、None 这两个文件都放在我的 virtualenv 的 Scripts 文件夹中。我正在使用 Windows 10.

您应该尝试断开连接并重新登录会话。 发生在我身上,这就是我解决它的方式。 在我这边,它在 ssh 控制台上。 祝你玩得开心day/night-

您遇到的问题是您是 运行 windows 版本的 python.exe 而不是 linux/bash 版本。

在 run.sh 中,我看到你指的是 python.exe,这是 windows exe,因此当它运行时它不会在同一个 [=28] =] 作为用于调用它的 .sh 脚本。

您可以通过在 WSL 中执行以下操作来向自己证明这一点

➜  which python.exe
/mnt/c/Python27/python.exe
➜  which python
/usr/bin/python

因此,只要你在 WSL 中安装了 python,你就可以简单地换掉 .sh 脚本中的 .exe,这样你就可以使用 bash/linux 版本:

export TRAINING_DATA=test1
export FOLD=test2
python train.py