[python] Pipfile과 Pipfile.lock 파일의 역할

Python 개발 프로젝트에서 자주 사용되는 패키지 관리 도구로는 pip이 있습니다. 그러나 pip만으로는 패키지들 간의 의존성 관리가 어렵기 때문에 PipfilePipfile.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 = "*"

Pipfile.lock

Pipfile.lockPipfile에 명시된 의존성 패키지들과 그들의 정확한 버전을 기록하는 역할을 합니다. 이 파일은 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
        }
    }
}

Pipfile.lock 파일은 의존성 패키지들의 정확한 버전을 고정하여 각 개발자들이 동일한 개발 환경을 유지할 수 있도록 도와줍니다.

따라서, Pipfile은 개발자가 원하는 패키지들과 버전을 명시하는 역할이고, Pipfile.lock은 실제로 설치된 패키지들과 그들의 정확한 버전을 기록하는 역할을 합니다. 이러한 파일들은 개발 프로젝트의 의존성 관리와 개발 환경의 일관성을 유지하는 데 매우 유용합니다.


파이썬 파이프라인 관리 도구 Pipfile과 Pipenv 소개