Python 3.x 使用bash脚本导出的环境变量在python中不可访问
我有两个文件:Python 3.x 使用bash脚本导出的环境变量在python中不可访问,python-3.x,bash,windows-subsystem-for-linux,Python 3.x,Bash,Windows Subsystem For Linux,我有两个文件: run.sh train.py 两个文件的内容 in run.sh export TRAINING_DATA=test1 export FOLD=test2 python.exe train.py 在火车上 from os import environ print(environ.get("TRAINING_DATA"), environ.get("FOLD")) 当我通过命令行运行bash文件时 bash run.sh 我没有得到test1和test2,而是一个也没有得到
export TRAINING_DATA=test1
export FOLD=test2
python.exe train.py
在火车上
from os import environ
print(environ.get("TRAINING_DATA"), environ.get("FOLD"))
当我通过命令行运行bash文件时
bash run.sh
我没有得到test1和test2,而是一个也没有得到
这两个文件都放在my virtualenv的脚本文件夹中。我正在使用Windows 10。您应该尝试断开连接并重新登录会话。 发生在我身上,我就是这样解决的。 在我这方面,它位于ssh控制台上。
祝你有一个美好的白天/夜晚-你应该尝试断开连接并重新登录会话。 发生在我身上,我就是这样解决的。 在我这方面,它位于ssh控制台上。
祝你有一个美好的白天/夜晚-你遇到的问题是,你运行的是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
您遇到的问题是,您运行的是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
你能在操作系统的
下添加print(environ.get('PATH'))
看看你有什么收获吗?@SaurabhRai:将下面的行粘贴到你的bash shell中,让我们知道你看到了什么输出:FOO=bar python-c'import os;print(os.environ.get(“FOO”)”
@Philippe:在os import environment
的下添加print(environ.get(“PATH”)
后,我得到了我的PATH环境变量的值,我猜这是``FOO=bar python.exe-c'导入操作系统的预期输出;print(os.environ.get(“FOO”))“``wasNone
。注意:我不得不用python.exe代替python,因为出于某种原因,我无法使用python关键字在我的bash shell中调用python解释器。我假设您没有安装可用于Linux的python。您能添加print(environ.get('PATH')吗
在操作系统的下…
查看您是否有任何收获?@SaurabhRai:将以下行粘贴到bash shell中,并让我们知道您看到的输出:FOO=bar python-c'import os;print(os.environ.get(“FOO”)'
@Philippe:After添加print(environ.get('PATH'))
在os import environ的下,我得到了PATH环境变量的值,我猜它是``FOO=bar python.exe-c'import os;print(os.environ.get(“FOO”)的预期输出“``wasNone
。注意:我不得不用python.exe代替python,因为出于某种原因,我无法使用python关键字在我的bash shell中调用python解释器。我假设您没有安装可用于Linux的python。@Alex…您能详细说明一下断开连接的意思吗?我正在通过调用我的run.sh文件bash run.sh
。你的意思是,在安装WSL和kali发行版后重新启动我的系统,然后是我做的。@Alex…你能详细说明一下断开连接的意思吗,我正在通过bash run.sh
调用我的run.sh文件。你的意思是,在安装WSL和kali发行版后重新启动我的系统,然后是我做的。这实际上y帮我指出了正确的方向。我的WSL上没有安装python。我只是启用了WSL来运行bash脚本。我现在已经在WSL上安装了python,并用python3
命令替换了python.exe
,现在我得到了所需的输出。谢谢。唯一的缺点是我现在必须维护python依赖项关于WSL:(.这实际上帮助我找到了正确的方向。我的WSL上没有安装python。我只是启用了WSL来运行bash脚本。我现在在WSL上安装了python,并用python3
命令替换了python.exe
,现在我得到了所需的输出。谢谢。唯一的缺点是我现在必须维护p也依赖于WSL:(。