--onefile을 사용한 PyInstaller 데이터 번들링: 누락된 리소스 해결
다음을 사용하여 PyInstaller로 압축 실행 파일(EXE)을 생성하는 과정에서 '--onefile' 플래그를 사용하면 사용자가 이미지나 아이콘과 같은 추가 데이터 파일을 묶는 데 어려움을 겪는 경우가 많습니다. 이 문제는 컴파일된 EXE가 참조된 리소스를 찾지 못하는 경우 발생합니다.
Shish가 제안한 특정 솔루션 중 하나는 스크립트에서 실행 메서드 앞에 환경 변수를 설정하는 것과 관련이 있습니다.
import os os.environ["IMAGE_PATH"] = os.path.join(os.path.dirname(os.path.abspath(__file__)), "images")
그러나 이 접근 방식은 최신 버전의 PyInstaller에서는 작동하지 않을 수 있습니다. 대신, 대체 솔루션은 런타임 중에 PyInstaller가 생성한 임시 디렉터리에 대한 경로를 제공하는 sys._MEIPASS 변수를 활용하는 것입니다.
def resource_path(relative_path): """ Get absolute path to resource, works for dev and for PyInstaller """ try: # PyInstaller creates a temp folder and stores path in _MEIPASS base_path = sys._MEIPASS except Exception: base_path = os.path.abspath(".") return os.path.join(base_path, relative_path)
이와 같은 사용자 정의 함수를 정의하면 개발 모드에서 스크립트를 실행하는지 또는 컴파일된 EXE로 스크립트를 실행하는지에 관계없이 데이터 파일의 절대 경로입니다. 상대_경로 매개변수 내에서 리소스에 대한 상대 경로를 지정하는 것을 잊지 마세요.
위 내용은 PyInstaller의 --onefile 옵션을 사용하여 데이터 파일을 올바르게 번들링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!