python / pip, .venv 가상환경

Duboo·2023년 8월 14일
1
post-thumbnail

프론트/백의 기본적인 흐름을 정리하기 위한 내용에서 백의 가상환경 세팅에 대한 내용


1. 가상 환경 세팅

먼저 가상 환경 세팅이 필요합니다.

가상 환경 세팅의 이유는 JS의 NPM을 예로 들면 패키지 매니저가 각 프로젝트 별로 패키지를 설치/지원하는 반면 파이썬의 pip라는 패키지 매니저는 시스템 전역으로 패키지를 설치하기 때문에 각 프로젝트 별로 의존성 충돌이 있기 때문입니다.

  • *Node.js/NPM은 dependency / devdependency으로 프로젝트에 의존성이 있는 패키지와 아닌 패키지를 구분합니다.
  • *파이썬의 패키지 매니저 pip(Package Installer for Python)는 가상환경을 세팅해주지 않으면 모든 파이썬을 사용하는 프로젝트는 하나의 환경에서 동작하게 됩니다.

python3 -m venv .venv

디렉토리 이름인 .venv는 파이썬 프로젝트의 관행이라 합니다.

가상환경 실행
source .venv/bin/activate

tip

가상환경 .venv 환경이 아닌 글로벌 환경에서 패키지를 잘못설치 했을 경우
글로벌 환경으로 이동 후 아래 명령어로 삭제 후 다시 가상환경에서 설치해주면 된다.

sudo pip uninstall packageName

가상환경 세팅이 끝났다면 .venv 디렉토리는 .gitignore에 올려 깃에 올라가지 않도록합니다.

echo '.venv' >> .gitignore


가상 환경을 만들고 .gitignore에도 디렉토리를 올려놨다면 현재 환경이 가상 환경이 맞는지 체크

본인의 터미널에 가상 환경 표시가 나오는지 확인


패키치 설치

기본적인 crud에 사용될 파이썬 패키지들 설치
pip install flask pymongo dnspython

설치하기 전에 가상 환경에서 pip list를 통해 현재 가상 환경에 설치된 패키지를 확인할 수 있습니다.

설치전

(venv) hyun@hyun:~/Desktop/.../...$ pip list
Package       Version
------------- -------
pip           20.0.2 
pkg-resources 0.0.0  
setuptools    44.0.0 

설치후

(venv) hyun@hyun:~/Desktop/.../...$ pip list
Package            Version
------------------ -------
blinker            1.6.2  
click              8.1.6  
dnspython          2.4.2  
Flask              2.3.2  
importlib-metadata 6.8.0  
itsdangerous       2.1.2  
Jinja2             3.1.2  
MarkupSafe         2.1.3  
pip                20.0.2 
pkg-resources      0.0.0  
pymongo            4.4.1  
setuptools         44.0.0 
Werkzeug           2.3.6  
zipp               3.16.2 

다른 패키지들도 같이 설치되는 이유는 패키지끼리 의존성을 가지는 경우 필요한 패키지를 자동으로 같이 설치하기 때문입니다.

pip show package를 입력하면 각 패키지별 설치 경로등 자세한 정보도 볼 수 있습니다.


  • 특정 버젼 패키지 설치
    ==version
    pip install flask==2.3.2

  • 설치된 패키지 최신버젼으로 업그레이드
    pip install -U package

  • 설치된 패키지 삭제
    pip uninstall package

  • 전체 패키지 리스트 확인
    pip list

개인이 아닌 팀 단위로 프로젝트를 진행할 경우 해당 프로젝트에 어떤 패키지를 설치해서 사용 중인지, 설치된 패키지를 한번에 설치하는 방법입니다.

현재 설치된 패키지를 requirements.txt 파일 생성 후 입력
pip freeze > requirements.txt

이렇게 내용이 입력된 파일(requirements.txt)을 통해 설치된 패키지들을 모두 한번에 설치할 수 있습니다.

pip install -r requirements.txt

profile
둡둡

0개의 댓글