2011-01-31 3 views
9

python Nagios 플러그인을 다운로드하고 설치하기위한 간단한 bash 스크립트를 작성합니다. 일부 구형 서버에서는 스크립트가 서브 프로세스 모듈을 설치해야 할 수도 있으므로 올바른 python-devel 파일이 설치되어 있는지 확인해야합니다.bash 스크립트에서 Python dev 파일의 존재 여부 확인

이러한 파일을 검사하기위한 적절한 플랫폼 간 방법은 무엇입니까? rpm 또는 apt에서 멀리하고 싶습니다.

파이썬에서 제대로 작동하는지 확인하는 방법을 알려 주시면 알려드립니다. 감사!

업데이트 :

이것은 내가 생각해 낸 최고입니다. 누구든지 더 나은 결정적인 방법을 알고 있습니까?

if [ ! -e $(python -c 'from distutils.sysconfig import get_makefile_filename as m; print m()') ]; then echo "Sorry"; fi 
+0

어떤 이유로 RPM을 좋아하지 않습니까? – ajreal

+2

나는 distro를 결정하고 rpm과 dpkg (apt)를 실행해야 할 것이다. 그래서 가능하다면 모든 코드를 갖고 싶지 않을 것입니다. bash 스크립트에서 "python -c import development-stuff"를 수행하고 종료 상태를 확인하면 더 좋을 것입니다. – CarpeNoctem

답변

5

이렇게하면 어떻게 할 것입니까? 알맞은 간단한 것 같습니다.

그러나 현재 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 

: distutils.sysconfig 그래서 모든 플랫폼에서 대부분의 휴대용 솔루션을 지원하지만, 여전히 apt, rpm 및 좋아하는에 변화를 수용하는 것보다 더 나은되지 않을 수 있습니다.

모든 플랫폼을 실제로 지원해야하는 경우m4 모듈에서 수행 된 작업을 살펴볼 필요가 있습니다. 이 모듈은 스크립트에 사용되어 autotools 기반 빌드의 ./configure 단계에서 python-devel에 대한 검사를 통합 할 수 있습니다.

+0

감사합니다. Python.h 부분을 포함하도록 스크립트를 수정했습니다! – CarpeNoctem

+0

반갑습니다. 다행이 게시물을 찾았 다행! –

1

귀하의 솔루션이 잘 작동합니다.

그렇지 않으면, 더 "우아한"해결책처럼 작은 스크립트를 사용하는 것입니다 :

testimport.py

#!/usr/bin/env python2 

import sys 

try: 
    __import__(sys.argv[1]) 
    print "Sucessfully import", sys.argv[1] 
except: 
    print "Error!" 
    sys.exit(4) 

sys.exit(0) 

그리고 testimport.sh distutils.sysconfig로 전화

당신 필요한 경우 내부 기능을 확인하기 위해이 기능을 적용 할 수 있습니다 ...

관련 문제