无法从python os shell执行奇观

无法从python os shell执行奇观,python,spectacle,Python,Spectacle,我试图从python脚本中执行奇观。v2.7。我正在使用Victory为yang模型生成静态HTML文档 奇观创建了一个包含html文档的目录,以及css和javascripts的两个子目录 当我从终端执行时,它工作正常。当我使用os.system或SUBSPROCESS调用尝试相同的命令字符串时,它会出错,代码为32512和127 resp 下面是cmd字符串: exe_spec = '/usr/local/bin/spectacle /Users/mwatt/swagpytest/Cisco

我试图从python脚本中执行奇观。v2.7。我正在使用Victory为yang模型生成静态HTML文档

奇观创建了一个包含html文档的目录,以及css和javascripts的两个子目录

当我从终端执行时,它工作正常。当我使用os.system或SUBSPROCESS调用尝试相同的命令字符串时,它会出错,代码为32512和127 resp

下面是cmd字符串:

exe_spec = '/usr/local/bin/spectacle /Users/mwatt/swagpytest/Cisco-IOS-XR-ip-bfd-cfg.yang.json'
>>> os.system(exe_spec)
32512 
>>> subprocess.call(exe_spec, shell=True)
127
从终端执行时,SwagByTest中的文件夹和文件如下所示:

public
    |--- javascripts (2 files)
    |--- stylesheets (4 files)
    |--- index.html
眼镜允许在命令行中指定目标目录,默认为public。我试着用完整的路径,但没有用

exe_spec = '/usr/local/bin/spectacle -t /Users/mwatt/swagpytest/public/ /Users/mwatt/swagpytest/Cisco-IOS-XR-ip-bfd-cfg.yang.json'

有类似的经历吗?谢谢。

FYI——最好避免
shell=True
subprocess.call(['/usr/local/bin/bitchet','/Users/mwatt/swagpytest/Cisco IOS XR ip bfd cfg.yang.json'])
本来就可以避免对shell的需要,这可能会导致更有意义的退出状态或异常(因为127通常在无法找到命令时由shell本身设置)。(顺便说一句,备份“非常好的实践”断言——请参阅re:shell=True中的大红色警告部分)。谢谢。我也尝试了shell=False,但得到了“OSError:[Errno 2]没有这样的文件或目录”“。只是不知道如何指定路径。这意味着它找不到
/usr/local/bin/bitch
——这只是该错误的第一个重要参数,因此您可以不再担心其他参数是否错误。您确定
/usr/local/bin
确实是它的安装位置吗?还需要查看调用它的上下文——例如,如果脚本在Docker容器中运行,那么重要的是容器的
/usr/local/bin
,而不是主机的。