pipenv로 독립환경 구축하기

과거에 python에서 프로젝트별 독립된 환경을 구축하려면 virtualenv를 사용했었다. 그렇지만 requirement.txt 의 버전의 명확성 등의 문제가 있었다.

이를 해결해준 것이  pipenv이다. virtualenv와 pip를 합쳐둔 것이라고 생각하면 쉽다.

아래 글은 mac에서 pipenv의 사용법을 설명한다.

pipenv 설치

python은 깔려있다는 가정하에 pip3 install pipenv 를 입력하면 된다.

가상환경 구축

원하는 프로젝트 폴더를 만든 다음 거기서 pipenv --python 3.9 이런 형식으로 입력하자.

➜  python-projects mkdir my-env
➜  python-projects cd my-env 
➜  my-env pipenv --python 3.9
➜  ls

그러면 현재 폴더에 Pipfile이 생긴것을 확인할 수 있다. (javascript의 package.json에 대응한다.)

가상환경 활성화

여기서 pipenv shell 을 입력해서 가상환경을 활성화해주자.

➜  my-env pipenv shell
Launching subshell in virtual environment...
 . /Users/myid/.local/share/virtualenvs/my-env-jfL0i_8H/bin/activate
➜  my-env  . /Users/myid/.local/share/virtualenvs/my-env-jfL0i_8H/bin/activate
(my-env) ➜  my-env 

프롬프트 앞에 (환경명) 이런 형태로 나타나면 활성이 된 것이다.

설치하기

아무거나 설치해보자. 환경이 활성화된 상태에서 pip를 쓰면 해당 환경에만 패키지가 설치된다. pip install matplotlib 이렇게 설치한다. (잘못된 방법 : pipenv install... - 이거는 Pipfile이 있는 해당 폴더에서는 해도 되는데, 다른 위치에서 했다가는 새로운 가상환경이 생성되어 버린다.)

(my-env) ➜  my-env pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl (7.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.3/7.3 MB 15.6 MB/s eta 0:00:00
Collecting contourpy>=1.0.1 (from matplotlib)
  Downloading contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl (229 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.6/229.6 kB 29.3 MB/s eta 0:00:00
:
:
Successfully installed contourpy-1.1.0 cycler-0.11.0 fonttools-4.40.0 importlib-resources-5.12.0 kiwisolver-1.4.4 matplotlib-3.7.1 numpy-1.24.3 packaging-23.1 pillow-9.5.0 pyparsing-3.0.9 python-dateutil-2.8.2 six-1.16.0 zipp-3.15.0

javascript의 node_modules 폴더와는 다르게 실제로 이 파일은 /Users/davelee/.local/share/virtualenvs/my-env-jfL0i_8H 내에 있다.

(my-env) ➜  my-env-jfL0i_8H ls
bin        lib        pyvenv.cfg share
(my-env) ➜  my-env-jfL0i_8H cd lib
(my-env) ➜  lib ls
python3.9
(my-env) ➜  lib cd python3.9 
(my-env) ➜  python3.9 ls
site-packages
(my-env) ➜  python3.9 cd site-packages 
(my-env) ➜  site-packages ls
PIL                                  importlib_resources-5.12.0.dist-info pylab.py
Pillow-9.5.0.dist-info               kiwisolver                           pyparsing
__pycache__                          kiwisolver-1.4.4.dist-info           pyparsing-3.0.9.dist-info
_distutils_hack                      matplotlib                           python_dateutil-2.8.2.dist-info
_virtualenv.pth                      matplotlib-3.7.1-py3.9-nspkg.pth     setuptools
_virtualenv.py                       matplotlib-3.7.1.dist-info           setuptools-67.7.2.dist-info
:
:

각 가상환경 폴더는 /Users/{username}/.local/share/virtualenvs 내에 있다.

설치된 패키지 목록 보기

환경이 활성화된 상태에서 pip list로 확인하자.

환경을 활성화시키는 다른 방법 (vscode)

vscode에서 폴더를 연 다음 아무 .py 파일 생성한다. 그러면 하단에 파이썬 버전이 적혀있는 부분이 있는데 이부분을 누르면 정확한 환경을 선택할 수 있다. 그 다음에 ctrl-shift-backtick 해서 새 terminal 생성하면 역시 (환경명)으로 시작하는 활성화된 환경에서 작업을 할 수 있다.