检查bash脚本中是否存在Python dev文件

Car*_*tem 9 python bash

我正在创建一个简单的bash脚本来下载和安装python Nagios插件.在一些较旧的服务器上,脚本可能需要安装子进程模块,因此我需要确保安装了正确的python-devel文件.

什么是检查这些文件的适当的跨平台方法.想远离rpm或apt.

如果你能告诉我如何在python中进行检查,那将是有效的.谢谢!

更新:

这是我提出的最好的.谁知道更好或更确定的方法?

if [ ! -e $(python -c 'from distutils.sysconfig import get_makefile_filename as m; print m()') ]; then echo "Sorry"; fi
Run Code Online (Sandbox Code Playgroud)

Sha*_*hin 6

这就是我要做的事情.看似合理简单.

但是,如果我需要确定python-devel为当前版本的Python安装了文件,我会查找相关Python.h文件.有点像:

# first, makes sure distutils.sysconfig usable
if ! $(python -c "import distutils.sysconfig.get_config_vars" &> /dev/null); then
    echo "ERROR: distutils.sysconfig not usable" >&2
    exit 2
fi

# get include path for this python version
INCLUDE_PY=$(python -c "from distutils import sysconfig as s; print s.get_config_vars()['INCLUDEPY']")
if [ ! -f "${INCLUDE_PY}/Python.h" ]; then
    echo "ERROR: python-devel not installed" >&2
    exit 3
fi
Run Code Online (Sandbox Code Playgroud)

注意:distutils.sysconfig可能无法在所有的平台都支持这样不是最便携的解决方案,但仍比试图以应付变化更好的apt,rpm和喜欢.

如果您确实需要支持所有平台,则可能值得探索在AX_PYTHON_DEVEL m4模块中执行的操作.此模块可以在configure.ac脚本中使用,以python-devel在基于autotools的构建./configure阶段中包含检查.