본문 바로가기
Python

[Python] .whl 파일

by 자몽먹은토끼 2025. 6. 1.
728x90
반응형

파이썬 프로젝트를 하다보면 .whl 확장자를 자주 혹은 종종 보게 된다.

 

whl(wheel)파일

 

wheel [휠] 파일은 Python 패키지 배포 시스템의 일환으로, python에서 사용하는 패키지 설치 배포용 파일이다.

그러니까, 쉽게 말하면 배포시에 해당 프로젝트에서 필요한 패키지 및 라이브러리를 설치하도록 돕는 파일이라고 생각하면 된다.

 

설치용 파일로 보통 wheel파일(.whl)과 source archive파일(.tar)이 있으나, 윈도우 환경에서는 source 파일보다는 wheel파일을 선호한다. (그럼 반대로 말하면 리눅스 환경에서는 source파일을 선호한다는 건가?)

 

wheel파일은 우리가 흔히 pip install [라이브러리 이름] 의 명령어를 작성할 때, 사용된다.

pip 명령어를 이용하여 해당 라이브러리의 wheel 파일을 PyPI에서 찾아서 다운 및 설치한다. PyPI에 올라가있는 wheel파일을 내려받아서 내 환경에 설치하는 거라고 생각하면 된다.

만약 PyPI에 내가 내려받고자 하는 패키지가 wheel파일로 없다면 소스코드를 받아서 직접 빌드한다. (소스코드를 받아서 빌드한다는 건 wheel파일이 없다는 건데 이때는, .tar.gz파일(소스코드 압축본)을 받아오거나 git에서 소스코드를 가져와 빌드/설치한다. 그러니까 wheel파일처럼 자동 빌드 설치가 안된다는 거다.)

 

 

Wheel 파일의 구조

python wheel 파일은 zip 형식으로 압축된 파일로, 패키지 배포에 필요한 모든 파일과 메타데이터를 포함하고 있다.

보통 3개의 디렉토리와 파일로 구성되어 있다.

  • 패키지 소스 코드 디렉토리 (my_package)
    실제 패키지 소스코드를 포함하고 있다. __init__.py와 module.py 를 비롯한 py파일이 여기에 들어있다. 
  • .dist-info 디렉토리 (my_package-1.0.0.dist-info)
    패키지 메타데이터를 포함하는 디렉토리이다.
    패키지이름, 버전, 작성자 등을 포함하는 METADATA, wheel파일의 형식과 버전정보를 포함하는 WHEEL, 패키지에 포함된 모든 파일의 목록과 해당 파일의 해시값 및 크기가 포함된 RECORD 등이 이 폴더에 들어있다.

  • .data 디렉토리 (my_package-1.0.0.data)
    추가적인 데이터 파일을 포함하는 디렉토리이다.
# METADATA
Metadata-Version: 2.1
Name: my_package
Version: 1.0.0
Summary: A brief description of my package
Home-page: https://example.com/my_package
Author: Your Name
Author-email: your.email@example.com
License: MIT
# WHEEL
Wheel-Version: 1.0
Generator: bdist_wheel (0.36.2)
Root-Is-Purelib:
# RECORD
my_package/__init__.py,sha256=abc123...,123
my_package/core.py,sha256=def456...,456
my_package-1.0.0.dist-info/METADATA,sha256=ghi789...,789

 

 

Wheel 파일 생성 방법

setup.py를 생성하여 이를 바탕으로 빌드하여 wheel파일을 생성한다.

 

# setup.py

from setuptools import setup, find_packages

setup(
	name= 'package_name',   # 패키지 이름
    version= '0.1',         # 패키지 버전
    packages= find_packages(), # 포함할 패키지 자동검색
    install_requires= [     # 의존성 패키지 목록
    	'requests==2.2.7',
        'beautifulsoup==4.8.1',
        'flask==1.1.1'
    ],
    author= 'my_name',      # 작성자
    author_email= 'user@gmail.com', # 작성자 이메일
    description= 'A description of my package', # 패키지 설명
    url= 'https://github.com/my_name/my_repo',  # 패키지 url
    classifier= [                               # 패키지 분류
    	'Programming Language :: Python :: 3',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
    ],
    python_requires='>=3.6',                    # 지원하는 파이썬 버전
)

pip install wheel 을 통해 wheel패키지를 설치하고, 

bdist_wheel 명령어로 wheel 파일 생성한다. (python setup.py bdist_wheel)

이 명령어를 실행하면 dist디렉토리에 .whl 파일이 생성된다.

 

배포시에는 앞서 설명했던 것과 일치하게 wheel 파일을 PyPI에 업로드하면 된다.

 

 

참고:

https://hobbylife.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%8C%A8%ED%82%A4%EC%A7%80-%EB%B0%B0%ED%8F%AC-Wheelwhl-%ED%8C%8C%EC%9D%BC-%ED%8A%B9%EC%A7%95%EA%B3%BC-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95

 

파이썬 패키지 배포 Wheel(*.whl) 파일 특징과 사용방법

파이썬 패키지 배포 Wheel(*.whl) 파일 특징과 사용방법Wheel 파일은 Python 패키지 배포 시스템의 일환으로 개발되었습니다. 과거에는 Python 패키지를 배포할 때 주로 sdist (소스 배포) 형식이 사용

hobbylife.tistory.com

https://jadehan.tistory.com/42

 

setup.py vs requirements.txt

python을 통해 개발을 하기 시작했다면, 대부분 setup.py 와 requirements.txt가 존재하는 것을 알고 있을 것이다. pypi 에서 확인해보면 라이브러리마다 setup.py와 requirements.txt 둘 중 하나만 사용하거나 둘

jadehan.tistory.com

 

728x90
반응형