HOWTO · Python

Python에 에그 파일 설치

이 자습서에서는 Python에서 .egg 파일을 설치하는 방법과 작업을 수행하는 데 필요한 도구를 설명합니다.

이 페이지의 내용

Python의 .egg는 setuptools와 관련된 레거시 배포 형식입니다. 휠(.whl)은 더 새로운 형식이며 새 프로젝트에 더 적합합니다. 기존 egg를 다뤄야 한다면 먼저 지원되는 Python 버전과 플랫폼을 확인하세요. 파일 확장자만으로는 호환성을 판단할 수 없습니다.

setuptools로 Python에서 .egg 파일 설치하기

과거에는 setuptools가 egg를 설치하는 easy_install 명령을 제공했습니다. 아래의 Windows 안내는 Python 2.7 시절의 작업 방식이며, 현재 Python 설치에 일반적으로 적용되는 절차가 아닙니다. 대상 인터프리터에서 setuptools와 easy_install을 이미 사용할 수 있고, egg가 호환되는 Python 버전과 플랫폼용으로 만들어진 레거시 환경에서만 사용하세요.

그런 환경에서 명령은 easy_install path\\to\\package.egg 형식으로 실행합니다. 대상 인터프리터의 Scripts 디렉터리가 PATH에 포함된 명령 프롬프트에서 실행하거나, 해당 인터프리터에 맞는 easy_install.exe의 전체 경로를 지정하세요. PYTHON_PATH 같은 설정은 Windows가 실행 파일을 찾게 해 주지 않습니다. 실행 파일 검색에 사용하는 변수는 PATH입니다. 오래된 부트스트랩 다운로드를 현재 설치 안내로 사용하지 마세요.

파일명 delftscope-0.1-py3.10.egg는 Python 3.10용 빌드임을 시사합니다. 이 이름만으로는 해당 패키지를 Python 2.7에서 설치할 수 있는지 알 수 없으며, 이 예제의 호환성을 입증하는 자료도 제공되지 않았습니다. 따라서 예시로만 다루세요. 신뢰할 수 있는 자료로 호환성이 확인되지 않는 한 Python 2.7 절차와 함께 사용하거나 설치가 성공한다고 단정하지 마세요. 예상 명령 출력도 근거가 있는 경우에만 포함하고, 근거가 없다면 생략하세요. 대상 인터프리터, 플랫폼 또는 명령 동작을 확인할 수 없다면 검증된 환경에 맞춰 안내 범위를 좁히거나 이 방법이 과거 방식이며 검증되지 않았음을 분명히 밝히세요.

새 프로젝트에서는 easy_install에 의존하지 말고, 프로젝트에서 지원하는 pip 방식으로 호환되는 휠을 설치하는 편이 좋습니다.

.egg 파일의 내용을 확인하고 압축을 풀어 설치하기

압축된 .egg는 ZIP 아카이브이므로 아카이브 유틸리티로 내용을 나열하거나 추출할 수 있습니다. unzip이 설치된 시스템에서는 unzip -l package.egg로 아카이브 목록을 확인할 수 있습니다. 이 명령은 파일을 추출하지 않습니다. 별도 디렉터리에 압축을 풀려면 unzip package.egg -d extracted-package를 사용하세요. 일부 egg는 ZIP 파일이 아니라 이미 풀린 디렉터리입니다. 디렉터리에는 unzip을 사용할 수 없으므로 파일을 직접 확인하세요.

다음 Python 예제는 ZIP 기반 .egg를 만들고 그 안의 파일 이름을 출력합니다. 표준 라이브러리를 사용해 아카이브를 확인하는 방법을 보여 줍니다.

from pathlib import Path
from tempfile import TemporaryDirectory
from zipfile import ZIP_DEFLATED, ZipFile

with TemporaryDirectory() as temp_dir:
    egg_path = Path(temp_dir) / "sample_package-1.0-py3-none-any.egg"
    with ZipFile(egg_path, "w", ZIP_DEFLATED) as egg:
        egg.writestr("sample_package/__init__.py", "VERSION = '1.0'\n")
        egg.writestr("EGG-INFO/PKG-INFO", "Metadata-Version: 1.2\nName: sample-package\nVersion: 1.0\n")

    with ZipFile(egg_path) as egg:
        for name in egg.namelist():
            print(name)
sample_package/__init__.py
EGG-INFO/PKG-INFO

이 최소 아카이브는 ZIP 내용을 확인하는 예시일 뿐, 완전한 패키지 설치는 아닙니다. 기존 egg의 압축을 풀었다면 먼저 파일을 확인하세요. setup.py가 있고, 패키지 안내에서 이 레거시 절차를 요구하며, 선택한 Python 환경이 호환되는 경우에만 setup.py가 있는 디렉터리에서 python setup.py install을 실행하세요. 이 명령은 패키지가 제공한 설정 코드를 실행하므로 신뢰하는 패키지에만 사용하세요. setup.py가 없다면 압축을 푸는 것만으로는 패키지가 설치되지 않습니다. 대신 패키지의 공식 안내를 따르세요.