我正在尝试调用Python模块但收到以下错误“test.sh not found”
但是该文件位于目录中。
process = subprocess.Popen("test.sh",shell=True)
脚本和sh文件位于同一目录中。
答案 0 :(得分:3)
默认情况下,当前目录不在PATH中,因此找不到"test.sh"
,最小的变化是使用"./tests.sh"
。
要运行shell脚本,请确保您拥有有效的shebang,例如#!/bin/sh
,并且该文件具有可执行权限(chmod u+x test.sh
)。
如果您从其他目录运行Python脚本,则还需要提供完整路径:
#!/usr/bin/env python
import os
import sys
from subprocess import check_call
script_dir = os.path.realpath(os.path.dirname(sys.argv[0]))
check_call(os.path.join(script_dir, "test.sh"))
注意:没有shell=True
在这里启动额外的不必要的shell进程。 realpath
解析符号链接,如果您想要路径相对脚本的符号链接而不是脚本文件本身,则可以使用abspath
。