16.5. Python 스크립트에서 인터프리터 지시문 처리


Red Hat Enterprise Linux 8에서 실행 가능한 Python 스크립트는 주요 Python 버전을 명시적으로 지정하는 인터프리터 지시문(Hashbangs 또는 shebangs)을 사용해야 합니다. 예를 들면 다음과 같습니다.

#!/usr/bin/python3
#!/usr/bin/python3.6
#!/usr/bin/python3.8
#!/usr/bin/python3.9
#!/usr/bin/python3.11
#!/usr/bin/python3.12
#!/usr/bin/python2
Copy to Clipboard Toggle word wrap

RPM 패키지를 빌드할 때 /usr/lib/rpm/redhat/brp-mangle-shebangs BRP(Buildroot Policy) 스크립트가 자동으로 실행되며 모든 실행 파일에서 인터프리터 지시문을 수정하려고 시도합니다.

BRP 스크립트는 다음과 같은 모호한 인터프리터 지시문으로 Python 스크립트를 찾을 때 오류를 생성합니다.

#!/usr/bin/python
Copy to Clipboard Toggle word wrap

또는

#!/usr/bin/env python
Copy to Clipboard Toggle word wrap

16.5.1. Python 스크립트에서 인터프리터 지시문 수정

RPM 빌드 시 빌드 오류를 일으키는 Python 스크립트에서 인터프리터 지시문을 수정합니다.

사전 요구 사항

  • Python 스크립트의 인터프리터 지시문 중 일부는 빌드 오류가 발생합니다.

절차

인터프리터 지시문을 수정하려면 다음 작업 중 하나를 완료합니다.

  • platform-python-devel 패키지에서 pathfix.py 스크립트를 적용합니다.

    # pathfix.py -pn -i %{__python3} PATH …​
    Copy to Clipboard Toggle word wrap

    여러 개의 PATHs 를 지정할 수 있습니다. PATH 가 디렉터리인 경우 pathfix.py 는 모호한 인터프리터 지시문이 있는 ^[a-zA-Z0-9_]+\.py$ 패턴과 일치하는 Python 스크립트를 재귀적으로 스캔합니다. 이 명령을 %prep 섹션 또는 %install 섹션 끝에 추가합니다.

  • 패키지된 Python 스크립트를 수정하여 예상되는 형식을 준수하도록 합니다. 이를 위해 pathfix.py 도 RPM 빌드 프로세스 외부에서 사용할 수 있습니다. RPM 빌드 외부에서 pathfix.py 를 실행하는 경우 위의 예제에서 %{__python3}/usr/bin/python3 과 같은 인터프리터 지시문 경로로 바꿉니다.

패키지된 Python 스크립트에 Python 3.6 이외의 버전이 필요한 경우 필수 버전을 포함하도록 이전 명령을 조정합니다.

16.5.2. 사용자 정의 패키지의 /usr/bin/python3 인터프리터 지시문 변경

기본적으로, /usr/bin/python3 형식의 인터프리터 지시문은 Red Hat Enterprise Linux의 시스템 도구에 사용되는 platform-python 패키지에서 Python을 가리키는 인터프리터 지시문으로 교체됩니다. 사용자 지정 패키지의 /usr/bin/python3 인터프리터 지시문을 AppStream 리포지토리에서 설치한 특정 Python 버전을 가리키도록 변경할 수 있습니다.

절차

  • 특정 버전의 Python에 대한 패키지를 빌드하려면 각 python 패키지의python*-rpm-macros 하위 패키지를 spec 파일의 BuildRequires 섹션에 추가합니다. 예를 들어 Python 3.6의 경우 다음 행을 포함합니다.

    BuildRequires:  python36-rpm-macros
    Copy to Clipboard Toggle word wrap

    결과적으로 사용자 정의 패키지의 /usr/bin/python3 인터프리터 지시문은 자동으로 /usr/bin/python3.6 으로 변환됩니다.

참고

BRP 스크립트가 인터프리터 지시문을 확인하고 수정하지 못하게 하려면 다음 RPM 지시문을 사용합니다.

%undefine __brp_mangle_shebangs
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat