在Python中,是否有一种可移植且简单的方法来测试可执行程序是否存在?
简单来说,我的意思是which命令,这将是完美的.我不想手动搜索PATH或者试图用Popen&al 执行它,并查看它是否失败(这就是我现在正在做的,但想象一下launchmissiles)
我正在编写我的第一个shell脚本.在我的脚本中,我想检查是否存在某个命令,如果不存在,则安装可执行文件.我该如何检查此命令是否存在?
if #check that foobar command doesnt exist
then
#now install foobar
fi
Run Code Online (Sandbox Code Playgroud) 我尝试用Ghostscript拆分多页PDF,我在更多网站甚至ghostscript.com上找到了相同的解决方案,即:
gs -sDEVICE=pdfwrite -dSAFER -o outname.%d.pdf input.pdf
Run Code Online (Sandbox Code Playgroud)
但它似乎对我不起作用,因为它生成一个文件,包含所有页面,名称为outname.1.pdf.
当我添加起始页和结束页时,它工作正常,但我希望它在不知道这些参数的情况下工作.
在gs-devel存档中,我找到了一个解决方案:http:
//ghostscript.com/pipermail/gs-devel/2009-April/008310.html - 但我觉得没有这样做pdf_info.
例如pswrite,当我使用不同的设备但是相同的参数时,它可以正常工作,产生尽可能多的ps文件,就像我的
input.pdf所包含的那样.
使用时这是正常的pdfwrite吗?难道我做错了什么?
在编写 Python 包时,我知道如何在setup.py文件中指定其他必需的 Python 包,这要归功于install_requires来自setuptools.setup.
但是,我不知道如何指定不是 Python 包的外部系统依赖项,即我的包可以通过or调用的诸如gitor cmake(示例)之类的命令?subprocess.callsubprocess.Popen
我是否必须手动检查setup.py文件中命令的可用性,或者是否有一种奇特的方式来指定系统要求?
编辑:我只想能够检查外部工具是否可用,如果不邀请用户安装它们(由他们自己)。我不想在安装包时管理外部工具的安装。
贡献摘要:似乎setuptools不支持这一点,在运行时进行检查会更安全(参见评论和答案)。