[python] Pipfile과 Pipfile.lock 파일의 역할
Python 개발 프로젝트에서 자주 사용되는 패키지 관리 도구로는 pip
이 있습니다. 그러나 pip
만으로는 패키지들 간의 의존성 관리가 어렵기 때문에 Pipfile
과 Pipfile.lock
파일이 등장하였습니다.
Pipfile
Pipfile
은 패키지의 의존성과 개발 환경에 필요한 패키지들을 기록하는 역할을 합니다. 이 파일은 pipenv
이라는 도구를 사용하는 경우 자동으로 생성됩니다. Pipfile
은 다음과 같이 작성됩니다:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[packages]
requests = "*"
django = ">=2.2,<2.3"
[dev-packages]
pytest = "*"
[[source]]
섹션은 패키지를 다운로드할 소스의 정보를 담고 있습니다.[packages]
섹션은 프로젝트에 실제로 필요한 의존성 패키지들을 기록합니다.[dev-packages]
섹션은 개발할 때만 필요한 패키지들을 기록합니다.
Pipfile.lock
Pipfile.lock
은 Pipfile
에 명시된 의존성 패키지들과 그들의 정확한 버전을 기록하는 역할을 합니다. 이 파일은 pipenv
을 사용하여 Pipfile
이 변경되거나 패키지가 설치되는 경우 자동으로 생성됩니다. Pipfile.lock
은 다음과 같이 작성됩니다:
{
"_meta": {
"hash": {
"sha256": "c571d68e263de5e6e9d4e0079879daa1c731ed0052343d400f909730d7cd8468"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.9"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"requests": {
"version": "==2.26.0",
"index": "pypi",
"editable": false
},
"django": {
"version": "==2.2.24",
"index": "pypi",
"mark": false
}
},
"develop": {
"pytest": {
"version": "==6.2.5",
"index": "pypi",
"editable": false
}
}
}
_meta
섹션은Pipfile.lock
파일의 메타 정보를 담고 있습니다.default
섹션은[packages]
섹션에 기록된 패키지들의 정확한 버전을 포함합니다.develop
섹션은[dev-packages]
섹션에 기록된 패키지들의 정확한 버전을 포함합니다.index
필드는 패키지를 다운로드할 소스를 지정합니다.
Pipfile.lock
파일은 의존성 패키지들의 정확한 버전을 고정하여 각 개발자들이 동일한 개발 환경을 유지할 수 있도록 도와줍니다.
따라서, Pipfile
은 개발자가 원하는 패키지들과 버전을 명시하는 역할이고, Pipfile.lock
은 실제로 설치된 패키지들과 그들의 정확한 버전을 기록하는 역할을 합니다. 이러한 파일들은 개발 프로젝트의 의존성 관리와 개발 환경의 일관성을 유지하는 데 매우 유용합니다.
파이썬 파이프라인 관리 도구 Pipfile과 Pipenv 소개