virtualenv 는 독립된 환경을 만들어주며 프로젝트별 패키지를 관리하기 용이하다.
anaconda 에서 python 으로 넘어간 이유
사내에서 anaconda3 를 사용해서 개발을 하고
개발에 사용된 pip libs 들을 wheel 파일로 준비해서 배포하곤 했다. (폐쇄망)
하지만 최근에 알아보니 Anaconda Commercial Edition 이 나왔고 pricing 이 눈에 보였다.
계속 사용하려고 생각하다가 찝찝...
1. license
내 환경에서는 사용자 수가 문제가 되지 않지만
고객사 환경은 200 user 를 넘기때문에 license 문제가 생길 수 있음
개인 개발환경에서는 사용해도 무관할듯하다.
(anaconda individual edition for commercial use 로 검색해보면 많은 정보가 나옴)
2. docker image size
현재 프로젝트의 모듈들을 Dockerize 진행중인데 이미지의 크기차이가 엄청 컸다.
anaconda3 의 image size 가 약 2.7GB, python:3.7.10-alpine 기준 약 41MB
alpine linux 이미지에 gcc 와 같은 빌드도구와 사용중인 패키지를 설치해도 377MB 밖에 되지않았다.
그럼 이제 Virtualenv 를 설치하고 프로젝트에 사용된 패키지를 정리해보자.
python 은 설치가 되어있다고 가정합니다.
이 글에서는 python 3.7 / pip 3.7 버전을 사용했습니다.
1. virtualenv 설치
root 권한이 없으면 permission error 가 발생했음
$ sudo pip3.7 install virtualenv
(sudo pip 명령이 안되면 program-error-review.tistory.com/60 를 참고하거나 root 계정에서 실행)
2. virtualenv 생성
$ mkdir myapp_env
$ virtualenv myapp_env
# virtualenv created
# created virtual environment CPython3.7.6.final.0-64 in 695ms
# activate myapp_env
$ source ./myapp_env/bin/activate
# activate 가 되면 커널의 입력부 앞에 env 이름이 나옴. (myapp_env) [root@localhost Apps]
# check pip libs and install pip libs
# extract pip libs list
$ pip freeze > requirements.txt
# deactivate myapp_env
$ deactivate
virtualenv 를 activate 시키고 App 에서 사용한 라이브러리를 체크하면 된다.
activate 된 상태에서 App 을 실행시키면 라이브러리가 없다는 에러가 계속 날테니..
필요한 라이브러리를 설치하고나면 pip freeze 를 활용해서 requirements.txt 를 만들어주자.
작업이 끝났다면 deactivate 로 virtualenv 에서 나오자.
다른 모듈들도 똑같이 진행하면 될듯하다.
잡설..
이제 anaconda 못쓰나..
'Python' 카테고리의 다른 글
python split string to int 초기화 예제 (0) | 2021.06.23 |
---|---|
python reference count (파이썬 레퍼런스 카운트) (0) | 2021.06.07 |
python ORM 적용 model.py 작성하기 (sqlacodegen) (0) | 2021.04.11 |
최근댓글