지난 포스팅에서는 아나콘다에 대해 소개하고 설치도 해 보았다.
[프로그래밍/Python] - [Anaconda] 아나콘다란? / 설치 / 명령어 소개
그리고 이는.. 파이썬 가상환경을 씹고 뜯고 맛보고 즐기기 위함이었다.
이번 포스팅에선 가상환경이 뭔지 그 개념과, 아나콘다로 생성도 해 보고 활성화도 해 보고 삭제도 해 보고 이것저것 다 해볼 것이다.
가상환경을 처음 접하시는 분들(본인 포함)을 위한 포스팅이다.
Window 기반으로 진행된다.
가상환경Virtual Environment
말 그대로, 가상의, 물리적 실체는 없으나 내 컴퓨터 안에 실재하고 있는 또 다른 컴퓨팅 환경을 말한다.
쉽게 말해 컴퓨터 안에 있는 또 하나의 컴퓨터라고 생각하면 될 것이다.
가상환경이 왜 필요한가요?
1. 컴퓨팅 환경을 분리해 여러 프로젝트 간 의존성 충돌을 방지한다.
파이썬이든 기타 다른 언어든 하나의 컴퓨터로 여러개의 프로젝트를 한다고 해 보자.
그 수가 적을때야 상관 없겠지만, 사용하는 언어도 많아지고 진행하는 프로젝트 수도 많아지면 컴퓨터 성능에 문제가 생길 수 있다. 프로젝트 1번에는 언어 A 2.0 버전을 사용해야 하는데 B에서는 언어 A 3.0 버전을 사용해야 해서 충돌 한다던가 하는 식으로.
이런 의존성 충돌을 방지하기 위해 하나의 프로젝트 혹은 프로그램에 하나의 완전히 독립적인 가상의 환경을 만들고, 환경 별로 라이브러리, 모듈, 컴퓨팅 언어 등을 별도로 지정해서 사용한다.
즉 한 컴퓨터에 여러 개발환경을 서로 독립적으로 설치, 실행할 수 있게 하기 위해 가상환경을 사용하는 것이다.
2. 프로젝트 관리가 편하다
프로젝트 하나당 환경 하나가 할당되어 있기 때문에, 관리가 편하다.
도식으로 보자면 아래와 같을 것이다.
가상환경, 만들고 사용해보자.
이제 직접 가상환경을 만들고 활성화, 비활성화, 삭제 등등을 해 볼 것이다.
관련해서 사용하는 명령어들은 하단의 아나콘다 명령어 부분에 요약 정리해 두었으니, 참고하시면 되겠다.
1. 생성
conda create -n 가상환경이름 python=버전
을 입력해보자. 이러쿵저러쿵 저절로 가상환경 생성 절차가 진행되고, 마지막에는 진짜 설치할 것인지를 묻는다.
y를 입력하면 생성 절차가 마저 진행된다.
본인은 test_vir_env라는 이름의 가상환경을 python 3.8버전으로 설치하고자 한다.
가상환경이 다 생성되면 아래와 같은 문구들을 볼 수 있을 것이다.
친절하게도, 해당 환경을 activate하려면 / deactivate하려면 어떻게 해야 하는지 알려준다.
activate 하려면? conda activate test_vir_env를 입력하세요
deactivate 하려면? conda deactivate를 입력하세요
2. 활성화, 비활성화
conda activate 가상환경이름
을 입력하면 된다.
그럼 아래 사진과 같이 현재 어떤 환경이 활성화 되어있는지를 볼 수 있다.
정말 python 3.8버전으로 설치되었을까?
그렇다!
이제 비활성화를 위해 conda deactivate를 입력하자. 그러면, 비활성화되어 초기 환경으로 돌아오게 된다.
3. 가상환경 목록 확인
여러개의 가상환경을 만들었다고 가정하자. 그리고, 너무 많이 만든 탓에 어떤 환경이 있는지 까먹어버렸다.
확인하고 싶다면 어떻게 하면 좋을까?
conda env list
를 입력하자. 설치된 가상환경 목록을 출력해준다.
위에서 만든 test_vir_env를 확인할 수 있다.
4. 가상환경 삭제
자, 하나의 프로젝트가 끝났다. 이제 더 이상 가상환경을 갖고 있을 필요가 없어서 삭제하고자 한다.
어떻게??
conda env remove -n 가상환경이름
을 입력하자. 해당 이름의 가상환경이 삭제된다.
5. 패키지 설치.
가상환경에 패키지를 설치해보자. 이거 하려고 아나콘다 사용하는 것이다.
conda install 패키지
를 입력하면 설치된다. 본인은 test_env라는 가상환경에 ipython이라는 패키지를 설치하려 한다.
잘 설치되었으니 실행도 해 볼까?
* 포스팅 주제와 맞지 않아서 ipython에 대해선 간략하게 언급만 하도록 하겠다.
ipython은 Interactive Python으로 생각하면 된다. 인터프리터로 해석되는 파이썬 코드의 한계를 확장해서 리눅스의 쉘과 같이 이용할 수 있도록 기능이 추가된 파이썬이다.
ipython을 사용하는 notebook으로는 Jupyter와 google colab이 있다.
이렇게 가상환경이 뭔지, 왜 사용해야 하는지 알아보았고
아나콘다로 가상환경 만들고, 활성화/비활성화 하고, 패키지 설치 및 가상환경 삭제까지 해 보았다.
그다지 어려운건 없으니 여러 번 만지다 보면 익숙해지리라 생각한다.
위에서 사용한 명령어들과 그 외 아나콘다 명령어들은 아래에 정리해 두었으니 필요할 때 참고하도록 하자.
알아두면 좋을 아나콘다 명령어
기본 명령어
1. conda --version
- 설치된 아나콘다의 버전을 출력한다.
2. conda info
설치된 아나콘다 관련 정보를 출력한다.
업데이트 관련 명령어
conda update conda
conda update anaconda
conda update –n base conda
conda, anaconda를 최신 버전으로 업데이트한다.
패키지 관련 명령어
conda install (패키지1=버전) (패키지2=버전) (패키지3=버전)...
- 현재 활성화 된 가상 환경에 패키지를 설치한다.
- 만약 활성화된 가상 환경이 없다면 기본 환경인 base, 즉 전역으로 설치된다.
- 예를 들어 conda install numpy=1.1를 실행하면 numpy 1.1이 설치되는 것.
conda install -n 가상환경이름 패키지명
- 지정한 가상 환경에 패키지를 설치한다. 활성화 된 가상 환경과 무관하다.
conda update 패키지명
- 설치된 패키지를 업데이트한다.
conda update --all
- 현재 환경에 설치된 모든 패키지를 업데이트한다.
conda list (패키지) (-n 가상환경)
- 현재 환경에 설치된 모든 패키지를 보여준다.
- conda list 뒤에 패키지명을 추가하면 해당 패키지가 현재 환경에 설치되어 있는지 알 수 있다.
- 맨 뒤에 가상 환경 이름을 추가하면 해당 환경에 설치된 패키지의 목록을 보여주며, 패키지명 인수와 같이 사용 가능하다.
conda search 패키지
- conda 저장소 내에 패키지가 존재하는지 검색해 볼 수 있다.
- 존재하는 패키지일 경우 어떤 버전이 존재하는지 나오지만 존재하지 않을 경우 에러가 발생한다.
conda remove (-n 가상환경) 패키지
- 해당 패키지를 삭제한다.
- 가상 환경 이름을 인수로 줄 경우 해당 환경에 설치된 패키지를 삭제하고, 따로 지정하지 않으면 현재 활성화 된 환경에서 패키지를 삭제한다.
가상환경 관련 명령어
conda create -n 가상환경 (python=파이썬버전) (anaconda)
# -n은 name의 약자다
- 설정한 이름으로 가상 환경을 생성한다.
- 가상환경이름 뒤에 python=버전 을 인수로 추가하면 해당 버전의 파이썬으로 가상 환경을 생성한다.
- 예를 들어, conda create -n hi python=3.7 명령어 실행 시 파이썬 3.7버전을 사용하는 가상 환경이 생성됨.
- 맨 뒤에 anaconda를 인수로 추가하면 base에 설치되어 있는 패키지를 기본으로 다 설치해준다.
conda create --clone 대상가상환경 -n 가상환경
- 가상 환경을 복사한다. 복사된 가상 환경은 대상의 패키지를 그대로 가진다.
conda env list
conda info --envs
- 생성되어있는 가상환경 목록을 보여준다.
(conda) activate 가상환경
- 지정한 이름의 가상 환경을 활성화한다. conda 부분은 생략 가능.
conda deactivate
- 현재 활성화된 가상 환경을 비활성화한다.
conda env remove -n 가상환경
- 지정한 이름의 가상 환경을 삭제한다.
'STUDY > Python' 카테고리의 다른 글
[Python] 반복문 (0) | 2024.03.19 |
---|---|
[Operator] 산술 연산자 / 비교 연산자 / 연산자 모듈 (0) | 2024.03.19 |
[Anaconda] 아나콘다란? / 아나콘다 설치 (2) | 2024.03.08 |
[visualization] 결측치 시각화 - missingno (0) | 2024.01.19 |
[Pandas] concat()과 merge()의 차이 (0) | 2024.01.16 |