2017-02-06 2 views
0

Я написал Баш скрипт, run.sh который имеет команду питона с несколькими вариантами -Запуск Bash скрипты в IPython

python train.py --lr 0.01 \ 
      --momentum 0.5 \ 
      --num_hidden 3 \ 
      --sizes 100,100,100 \ 
      --activation sigmoid \ 
      --loss sq \ 
      --opt adam \ 
      --batch_size 20 \ 
      --anneal true 

Я попытался запустить эту команду в IPython -

!./run.sh 

Однако в IPython Я не могу получить доступ к переменным скрипта python train.py. Есть ли способ запустить скрипт bash в iPython, чтобы я мог получить доступ к переменным? Я не хочу копировать эту команду из сценария bash каждый раз.

В настоящее время я использую iPython 5.1.0 для macOS Sierra.

+0

Запустите свою ячейку с '%% bash', затем вы можете ввести код оболочки. Это называется «bash cell magic», если вы хотите его использовать. – cel

+0

@cel: Это, похоже, не помогает. Попробовали. – rvadaga

ответ

1

Процесс python, который запускает ваш сценарий train.py, и процесс python, который вы используете в командной строке ipython, - это два отдельных процесса. Имеет смысл, что никто не знает об переменных других. Вероятно, есть какой-то причудливый способ подключения двух, но я подозреваю, так как вы описали проблему, что это не стоит того.

Вот простой способ получить доступ: вы можете заменить python train.py в свой скрипт python -i train.py. Таким образом, вы перейдете в интерактивный режим в процессе, который запускает ваш скрипт после его завершения, и все, что определено на основном уровне, будет доступно. Вы можете вставить вызов в pdb.set_trace() в свой скрипт, чтобы остановиться в произвольной точке.

Смежные вопросы