> 백엔드 개발 > 파이썬 튜토리얼 > Python 패키지 내의 정적 파일에 어떻게 액세스할 수 있나요?

Python 패키지 내의 정적 파일에 어떻게 액세스할 수 있나요?

DDD
풀어 주다: 2024-12-12 20:38:10
원래의
709명이 탐색했습니다.

How Can I Access Static Files Within a Python Package?

Python 패키지 내부에서 정적 파일 읽기

상황

Python 패키지에 액세스하려는 템플릿 텍스트 파일이 포함되어 있다고 상상해 보세요. 프로그램. 이러한 파일에 대한 경로를 지정할 때 패키지 구조를 처리해야 합니다.

TLDR: importlib.resources(Python 3.9 )를 사용

이전 버전과의 호환성이 문제가 되지 않는 경우(예: Python 3.9 이상을 사용하는 경우) importlib.resources를 활용하세요. module.

from importlib import resources as impresources
from . import templates

inp_file = impresources.files(templates) / 'temp_file'
with inp_file.open("rt") as f:
    template = f.read()
로그인 후 복사

기존 방법: Setuptools에서 pkg_resources 사용

Python 버전 3.9 미만의 경우 pkg_resources 모듈 사용을 고려하세요. 🎜>설정 도구 배포.

import pkg_resources

# Could be a dot-separated package/module name or a "Requirement"
resource_package = __name__
resource_path = '/'.join(('templates', 'temp_file'))  # Do not use os.path.join()
template = pkg_resources.resource_string(resource_package, resource_path)
# or for a file-like stream:
template = pkg_resources.resource_stream(resource_package, resource_path)
로그인 후 복사
단계:

  1. 패키지 계층 구조 내에서 템플릿을 찾습니다.

    <your-package>
      +--<module-asking-for-the-file>
      +--templates/
           +--temp_file
    로그인 후 복사
  2. 다음 중 하나를 사용하는 템플릿 파일 방법:

    • 옵션 1(importlib.resources):

      from . import templates
      
      inp_file = impresources.files(templates) / 'temp_file'
      로그인 후 복사
    • 옵션 2 (pkg_resources):

      resource_path = '/'.join(('templates', 'temp_file'))
      template = pkg_resources.resource_string(__name__, resource_path)
      로그인 후 복사
팁:

    현재 모듈 내부의 파일에 대해서는
  • 을 사용하세요. package를 패키지 인수로 사용 importlib.resources.
  • importlib.resources.files 함수는 컨텍스트 관리자 기반 임시 파일 액세스를 허용하는 경로 유사 객체를 반환합니다.
  • setup.py에 정적 파일을 포함하거나 MANIFEST 패키징 목적으로 사용됩니다.
  • zipapp 배포를 활성화하려면
  • setup.py에서 zip_safe=True 설정을 고려하세요.

위 내용은 Python 패키지 내의 정적 파일에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿