Переменная среды, экспортированная с использованием сценария bash, недоступна в python - PullRequest
1 голос
/ 03 февраля 2020

У меня есть два файла:

  1. run. sh
  2. train.py

Содержимое обоих файлов в прогоне. 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 Оба файла помещены в папку Scripts моего virtualenv. Я использую Windows 10.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Проблема, с которой вы столкнулись, заключается в том, что вы используете windows версию python .exe, а не версию linux / bash.

В процессе. sh я вижу, что вы ссылаетесь на python .exe, это windows exe, поэтому при запуске он не будет находиться в той же оболочке, что и скрипт. sh, используемый для его вызова.

you Вы можете доказать это самому себе, выполнив следующие действия из WSL

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

Так что, если у вас установлен python в WSL, вы можете просто заменить файл .exe в сценарии. sh так, чтобы вы используете версию bash / linux таким образом:

export TRAINING_DATA=test1
export FOLD=test2
python train.py
0 голосов
/ 03 февраля 2020

Вы должны попробовать отключиться и снова войти в сеанс. Случилось со мной и вот как я это решил. На моей стороне это было как sh консоль. Хорошего дня / ночи-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...