У меня есть сценарий Python, который в конце запускает исполняемый файл / программу с именем "quickFit" до subprocess.Popen()
. Когда я запускаю свой терминал, я всегда перехожу в каталог quickFit и source setup.sh
, чтобы я мог просто запустить этот исполняемый файл из любого места. Затем я попытался запустить этот скрипт в задании HTCondor, но там все пошло не так. Моя оболочка zsh. Вот пример:
test.py:
#!/usr/bin/env python
import subprocess
out = subprocess.check_output("quickFit -h", shell = True)
print(out)
test.sub:
executable = ~/private/scripts/TEST.py
universe = vanilla
log = ~/private/scripts/TEST/log.txt
error = ~/private/scripts/TEST/err.txt
should_transfer_files = IF_NEEDED
when_to_transfer_output = ON_EXIT
queue 1
Запуск test.py
приводит к ожидаемому поведению: команда quickFit выполняется и отображает список опций и возможных аргументов (-h для справки). Это точно такое же поведение, как когда я запускаю quickfit -h
из моего терминала.
Запуск condor_submit test.sub
, однако приводит к преждевременному завершению задания и файлу err.txt, информирующему меня о ненулевом статусе выхода 127: /bin/sh: quickFit: command not found
Я попробовал chmod -R 777 *
все в каталоге quickFit, потому что я думал, что это связано с разрешениями, но это не сработало.
Я также пытался (в python) изменять каталоги в каталог quickFit и настройку повторного поиска. sh, но это вызвало еще больше проблем.
Наконец, я попытался добавить getenv = True
в файл .sub
, что привело к следующей ошибке: quickFit: error while loading shared libraries: libquickFit.so: cannot open shared object file: No such file or directory