프론트/백의 기본적인 흐름을 정리하기 위한 내용에서 백의 가상환경 세팅에 대한 내용
먼저 가상 환경 세팅이 필요합니다.
가상 환경 세팅의 이유는 JS의 NPM을 예로 들면 패키지 매니저가 각 프로젝트 별로 패키지를 설치/지원하는 반면 파이썬의 pip라는 패키지 매니저는 시스템 전역으로 패키지를 설치하기 때문에 각 프로젝트 별로 의존성 충돌이 있기 때문입니다.
- *Node.js/NPM은 dependency / devdependency으로 프로젝트에 의존성이 있는 패키지와 아닌 패키지를 구분합니다.
- *파이썬의 패키지 매니저 pip(Package Installer for Python)는 가상환경을 세팅해주지 않으면 모든 파이썬을 사용하는 프로젝트는 하나의 환경에서 동작하게 됩니다.
python3 -m venv .venv
디렉토리 이름인 .venv
는 파이썬 프로젝트의 관행이라 합니다.
가상환경 실행
source .venv/bin/activate
가상환경 .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