我有一个 Python 脚本,它最后通过subprocess.Popen()
. 当我启动终端时,我总是移动到 quickFit 目录,source setup.sh
因此我可以从任何地方运行该可执行文件。然后我尝试在 HTCondor 作业中运行此脚本,但它出错了。我的外壳是 zsh。这是一个例子:
测试.py:
#!/usr/bin/env python
import subprocess
out = subprocess.check_output("quickFit -h", shell = True)
print(out)
测试子:
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 目录并重新采购 setup.sh,但这带来了更多问题。
最后我尝试添加getenv = True
到.sub
导致以下错误的文件:quickFit: error while loading shared libraries: libquickFit.so: cannot open shared object file: No such file or directory