imhamburger 님의 블로그

파이썬(Python) - MANIFEST.in 개념 이해하기 + 생성하기 본문

파이썬(Python)

파이썬(Python) - MANIFEST.in 개념 이해하기 + 생성하기

imhamburger 2024. 9. 2. 16:28

MANIFEST.in 파일은 Python 프로젝트에서 패키지를 배포할 때 포함될 파일들을 지정하기 위해 사용한다.

 

MANIFEST.in 파일은 Python 프로젝트에서 패키지를 만들 때, 어떤 파일들을 포함시킬지 또는 제외할지를 결정하는 "포장 리스트"라고 생각하면 된다.

 

예를 들어, 내가 Python 패키지를 만들어서 다른 사람들과 공유하려고 하는데, 이 패키지에는 코드 외에도 설명서(README), 라이선스(LICENSE), 그리고 예제 파일들이 함께 들어가길 원한다고 해보자.

 

그.런.데

 

이런 파일들은 기본적으로 패키지에 포함되지 않는다. 그래서 MANIFEST.in 파일을 만들어서 "이 파일들도 같이 넣어줘"라고 알려주는 것이다.

 

결론적으로, MANIFEST.in 파일은 Python 패키지를 배포할 때 포함할 파일들을 명시적으로 관리하기 위한 도구이다.

이 파일을 사용하면, 배포되는 패키지에 원하는 파일들을 정확하게 포함하거나 제외할 수 있어, 더 정교한 배포 패키지를 만들 수 있다.

 

 

~.pkl파일은 pip install로 해도 패키지에 추가가 안돼?

 

.pkl 파일은 pip install로 패키지에 추가되지 않는다.

pip install은 주로 Python 코드를 패키지로 배포하고 설치하는 데 사용되며,

이 과정에서 .py 파일이나 기타 코드 관련 파일들을 패키지에 포함한다. 하지만 .pkl 파일과 같은 데이터 파일이나 모델 파일은 자동으로 포함되지 않을 수 있다.

 

만약 .pkl 파일을 배포하는 Python 패키지에 포함시키고 싶다면, 두 가지 방법을 사용할 수 있다:

 


1. MANIFEST.in 파일 사용


MANIFEST.in 파일을 만들어서 .pkl 파일을 패키지에 포함되도록 명시할 수 있다.

예를 들어, 프로젝트 루트에 data/model.pkl 파일이 있다고 가정하면, MANIFEST.in 파일에 다음과 같이 작성할 수 있다:

include data/model.pkl

#혹은 recursive
recursive-include data *.pkl

 

 

 

2. setup.py에서 package_data 옵션 사용


setup.py 파일에서 package_data 옵션을 사용해 특정 패키지에 .pkl 파일을 포함할 수 있다. 아래 코드 참고.

from setuptools import setup, find_packages

setup(
    name='your_package_name',
    version='0.1',
    packages=find_packages(),
    package_data={
        'your_package': ['data/*.pkl'],
    },
)

여기서 your_package는 .pkl 파일이 위치한 패키지의 이름이며, data/*.pkl은 포함할 파일의 경로이다.

 

 

따라서,


.pkl 파일과 같은 데이터 파일을 패키지에 포함시키려면 MANIFEST.in 파일을 사용하거나, setup.py의 package_data 옵션을 사용해야 한다. 이렇게 하면 pip install로 패키지를 설치할 때 .pkl 파일도 함께 설치된다.

 

 

MANIFEST.in에 추가하고 pip list 로 확인해보았는데 pkl파일이 보이지 않아!

 

pip list는 설치된 파이썬 패키지 목록을 보여주며, 각 패키지의 이름과 버전을 나열한다. 이 목록에는 패키지에 포함된 개별 파일들(예: .pkl, .txt, .csv 파일 등)이 나타나지 않는다.

MANIFEST.in 파일은 주로 패키지 배포 시 포함해야 하는 추가 파일들을 지정하는 데 사용된다. 그러니 안보이는건 당연한 사실!!

 

 

정리하자면,


MANIFEST.in에 .pkl 파일을 포함시키면, 해당 파일이 패키지를 빌드하고 배포할 때 패키지에 포함되도록 할 수 있다. 하지만 pip list에는 이 파일이 표시되지 않고, 오직 패키지의 이름과 버전만 나온다.

 

 

 

파이썬 MANIFEST 공식문서 바로가기