python-3.x - 使用 bash 脚本导出的环境变量在 python 中无法访问
问题描述
我有两个文件:
- 运行.sh
- 火车.py
run.sh 中两个文件的内容
export TRAINING_DATA=test1
export FOLD=test2
python.exe train.py
在火车.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。
解决方案
您遇到的问题是您正在运行 windows 版本的 python.exe 而不是 linux/bash 版本。
在 run.sh 中,我看到您指的是 python.exe,这是 Windows exe,因此当它运行时,它与用于调用它的 .sh 脚本不在同一个 shell 中。
您可以通过在 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
推荐阅读
- python - Threading a c++ program in python
- python - 如何执行while循环中的文件python脚本而不中断它?
- javascript - div不在同一高度
- python - 时间序列模型以 ValueError 结束
- php - 当表格在每个页面上时将 $_GET 存储到 $_SESSION 联系表格 7
- php - Laravel:用户登录时用户生日重置
- jsf - primeFaces 不重新渲染组件
- android - 我们可以通过编程设置呼叫转移吗?
- java - Java中的lambda目标类型和目标类型上下文是什么意思?
- spring-boot - 如何让spring data mongodb在每个测试方法之前执行createIndexes?