2023. 12. 11. 23:20ㆍPython

가상환경은 프로젝트 또는 응용 프로그램을 위한 독립적인 환경을 구축하여 각각의 환경에서 필요한 라이브러리, 패키지, Python 버전 등을 분리하여 관리하는 것을 의미합니다. 이번 포스팅에서는 가상환경이 필요한 이유와 관련 명령어들을 정리해 보았습니다.
1. 가상환경 생성의 필요성
가상환경 생성의 중요성에 대해서는 많이들 알고 계실 텐데요, 가상환경 생성이 필요한 이유는 크게 3가지로 요약할 수 있습니다.
(1) 패키지 및 라이브러리 버전 관리 : 서로 다른 프로젝트가 필요로 하는 라이브러리 버전 충돌을 방지하고, 각 프로젝트에 맞는 환경을 생성하여 버전 관리를 용이하게 함
(2) 프로젝트 분리 및 격리 : 각각의 프로젝트가 독립적인 환경에서 작동하여 서로 영향을 주지 않고 관리되도록 함
(3) 효율적인 개발 및 테스트 : 다양한 환경에서 손쉽게 테스트 하고, 문제가 발생할 경우 환경을 격리하여 해결할 수 있도록 함
2. 가상환경의 종류 (Conda / Python)
가상환경에 대해 정리해보고자 했던 계기가 conda와 python 가상환경의 역할과 차이점에 대해 확실히 이해하고 넘어가기 위함이었습니다. 두 가지 모두 독립적인 환경을 구축하고 관리하는데 사용되는 주요한 도구입니다.
(1) conda 가상환경
: 데이터 과학 및 머신러닝 작업을 위한 패키지 관리 및 환경 관리 도구
: 여러 패키지를 손쉽게 설치/업데이트/제거 가능하고 다양한 패키지/라이브러리 간의 의존성 관리가 편리함
: Cross-Platform (Windows, macOS, Linux)을 제공하여 다양한 운영체제에서 일관된 환경을 유지할 수 있음
(2) python 가상환경
: python 내장 모듈인 venv를 이용하여 가상환경을 생성하고 관리
: python 표준 라이브러리에 내장되어 있어 가볍고 간편하게 사용 가능하다는 장점이 있음
"추가적인 도구나 패키지 설치가 필요없는 간단한 프로젝트 혹은 python 표준 환경에서 개발을 진행하고자 할 때는 python 개발 환경을 선택하고, 보다 복잡한 패키지 관리 및 다양한 라이브러리 의존성을 관리해야하는 경우 conda를 선택할 수 있습니다."
3. 관련 명령어
먼저, 가상환경을 생성하는 것부터 실행, 종료, 삭제 등 필수적인 명령어를 conda, python으로 나누어 살펴보겠습니다.
conda | python | |
생성 | conda create -n {myenv} | python -m venv {myenv} |
실행 | conda activate {myenv} | (Windows) {myenv}\Scripts\activate (macOS/Linux) source {myenv}/bin/activate |
종료 | conda deactivate | deactivate |
삭제 | conda env remove -n {myenv} --all | (Windows) rmdir /s {myenv} (macOS/Linux) rm -r {myenv} |
* {myenv} : 가상환경 이름 설정
이외에도 함께 알아두면 좋은 라이브러리(혹은 패키지) 관리 명령어를 몇 개 살펴보겠습니다.
conda | python | |
설치 | conda install {library name} | pip install {library name} |
업데이트 | conda update {library name} | pip install --upgrade {library name} |
특정 라이브러리 삭제 | conda remove {library name} | pip uninstall {library name} |
모든 라이브러리 삭제 | conda remove --n {myenv} --all |
이번 포스팅에서는 가상환경을 세팅하면서 궁금했던 conda와 python 가상환경의 차이점에 대해서 알아보고, 필요한 명령어들을 정리해보았습니다. 이번 글을 통해서 가상환경에 대해 다시 한번 공부하는 계기가 되었고, 매번 검색하던 명령어들도 정리가 된 것 같습니다!
'Python' 카테고리의 다른 글
pandas.date_range - 주기적인 날짜 데이터 생성하기 (0) | 2022.07.05 |
---|---|
[python] ConfigParser 이용한 외부인자 관리 (0) | 2022.06.07 |
[Python] strftime & strptime 비교 정리 (0) | 2022.05.25 |
[Python] Powerful library for EDA - Pandas Profiling (0) | 2022.05.16 |
[Python] pandas.melt() (0) | 2022.05.10 |