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 못쓰나..

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기