#python-3.x #bash #path #jupyter-notebook #binaryfiles
#python-3.x #bash #путь #jupyter-notebook #двоичные файлы
Вопрос:
Я пытаюсь выполнить двоичные файлы в ячейке Jupyter Notebook со следующими кодами. Они взяты из примерного кода, который, как было доказано, работает.
os.system("hprep96 -M %s.d -d %s -HS %.4f -HR 0 -EQEX"%(model,dfile_out,depth))
!hspec96
!hpulse96 -D -i > file96
!f96tosac -B file96
Однако печатаются следующие сообщения об ошибках.
sh: hprep96: command not found
/usr/bin/sh: hspec96: command not found
/usr/bin/sh: hpulse96: command not found
/usr/bin/sh: f96tosac: command not found
Я предполагаю, что ошибка заключается в том, что путь к двоичным файлам не включен в среду для Jupyter Notebook.
На самом деле, я обновил пути к этим файлам в скрипте ~/.bashrc
следующим образом:
$ export PATH="/home/msseo/data1/Graduate_Study/01.MomentTensor/CPS_Herrmann/PROGRAMS.330/bin:$PATH"
Поэтому эти двоичные файлы хорошо выполняются, просто введя их в терминале. Однако я хочу выполнить их из ячейки Jupyter Notebook с помощью команд, которые я написал ранее.
Какую строку я должен добавить, чтобы решить эту проблему?
Комментарии:
1. Я временно решил эту проблему, переместив все двоичные файлы в
/home/msseo/data1/Graduate_Study/01.MomentTensor/CPS_Herrmann/PROGRAMS.330/bin
каталоге в текущий каталог, к которому принадлежит Jupyter Notebook. Однако я хотел бы знать, есть ли более удобный способ выполнить двоичные файлы без их перемещения.2. Предполагая, что ваша программа на Python не изменяет ПУТЬ, я предполагаю, что к моменту вызова скрипта Python ПУТЬ уже неверен. Я предлагаю вам сделать
printenv PATH
это прямо перед вызовом вашей программы на Python, чтобы убедиться в этом.3. Я не знаю среду Jupyter, но если она не выполняется из интерактивной оболочки bash,
changing something in
.bashrc` бессмысленно.4. @user1934428 Вы имеете в виду
print(os.environ['PATH'])
? Кажется, что он содержит пути, которые я добавил в скрипт.bashrc
5. Конечно, делать это изнутри Python тоже хорошо. Но если на данный момент ПУТЬ в порядке, программа должна быть найдена. Кстати, ваш вопрос, похоже, не связан с bash, потому что ваш
os.system
вызов, очевидно, не запускает bash, как вы можете видеть из формулировки сообщения об ошибке.