본문으로 바로가기

outdated! 

 

pipenv를 사용하지 말고, 의존성 락킹도 안되는 pip도 사용 안합니다. 

 


 

pip(package install for python)은 python을 위한 패키지 관리 도구입니다. JS로 치면 npm입니다.

파이썬의 패키지들은 다음의 사이트에서 패키지들을 관리하고 있습니다.

 

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

이 사이트에서 패키지들을 다운로드 받고 업데이트하는 도구로 pip이 존재하는 것입니다.

npm에서 quick start, install, guide를 보듯 여기서도 볼 수 있습니다. pythonist라면 자주 들려서 확인하게 될 것입니다.

 

pipenv란 일종의 가상 환경입니다. pip install [something]를 실행하면 전역으로 설치합니다. npm에서 무언가를 설치하면 해당 프로젝트에만 설치되었습니다. (package.json) 그러나 python의 pip은 프로젝트가 아닌 무조건 전역 설치를 합니다. 따라서 프로젝트를 실행할 때는 pipenv가 필요합니다.

 

만약 그냥 전역 설치를 한다면 어떻게 될까요? Django 2.2.5 버전을 전역 설치한 후 만든 프로젝트를 이후에 다른 프로젝트에서 Django 3.0을 사용하기 위해 설치하게 된다고 가정합시다. 그러면 Django 2.2.5로 만든 프로젝트는 망가질 수 밖에 없습니다. 이런 상황을 막기 위해서는 각 프로젝트 별로 설치하는 파일을 분리해줄 필요가 있습니다.

 

가상 환경으로는 pipenv 외에 virtualenv와 같은 여러 가상 환경이 있습니다만, 여기서는 pipenv를 사용해보겠습니다.

 

 

따라서 무언가를 설치할 때는 pipenv로 설치해야 한다는 것입니다.

 

 

Pipenv: Python Dev Workflow for Humans — pipenv 2018.11.27.dev0 documentation

Pipenv: Python Dev Workflow for Humans Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, yarn, etc.) to the Python world. Windows is a first-class citizen, in our world. It automatically creates and manage

pipenv-fork.readthedocs.io

 

window 사용자를 가정하고 설치 과정을 따릅니다.

pip install --user pipenv

 

pipenv가 제대로 설치되었다면 이제 pipenv를 통해 패키지를 설치할 수 있습니다.

 

그 전에 무슨 python 환경에서 pipenv를 설정할 것인지부터 차근차근히 작성해보겠습니다.

 

# 원하는 경로로 이동
cd myproject

# To initialize a Python 3 virtual environment, run $ pipenv --three
# 20200511 현재 3.7이 최신입니다. 그 이상이라면 다운 그레이드한 후 설치합시다
pipenv --three

# pipenv 생성이 완료되면 해당 가상환경 내에서 작업해야 합니다.
pipenv shell

# 해당 가상환경 내부에서 이제 pipenv를 통해 패키지를 설치하면 됩니다.
pipenv install Django==2.2.5

 

* pipenv 가상 환경을 설정한 후에는 Pipfile이 생성됩니다. 설치된 패키지는 모두 여기에 모입니다. package.json과 같은 역할입니다.

 

Pipfile의 생김새는 다음과 같습니다.

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
django = "==2.2.5"

[requires]
python_version = "3.7"

 

 

 

* 만약 pipenv shell에서 나와서 설치된 django의 명령어를 입력해본다면 작동하지 않고 오류를 냅니다. 그러나 가상 환경 내부에 들어가면 정상적으로 작동합니다. 가상환경이 제 역할을 하고 있다는 의미입니다.

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체