Python 연습장
Python 가상환경 만들기 본문
1. 가상환경이 필요한 이유 : 프로젝트별로 다른 버전의 패키지들이 필요하기 때문.
Python 으로 코딩하다보면 버전이 안 맞는 경우가 생긴다.
이 패키지를 쓰려면 저 패키지의 버전을 낮춰야하고 근데 나는 다른 프로젝트에서 저 패키지의 높은 버전이 필요하고..
그렇게 버전을 올리고 내리고 하다가 환경설정이 다 망가지고 파이썬 다 지우고 새로 설치해야하는 경우가 생긴다. (꽤 많이!)
패키지가 아니라 파이썬 버전이 안 맞는 경우도 있다.
대표적으로 python 3.8까지만 지원하는 Pycaret 이 그렇다.
또 gpu 에 따라 tensorflow 설치 시 Python 환경이 달라지는데 이 때도 필요하다.
또 하나 더. pyinstaller 나 cx_freeze 로 exe 파일 만들 때 필요없는 패키지들까지 같이 묶이게 되는데 필요한 패키지들만
가상환경에 설치해서 exe 로 만들면 용량이 훨씬 줄어든다.
어쨌든 프로젝트를 여러개 하는 사람이라면 가상환경을 이용하는 버릇을 들여야 한다!
2. 가상환경 생성 방법
1) venv 사용 : 내장 python interpreter 를 바탕으로 여러 환경 구성
venv 는 파이썬3 에서 기본으로 가상환경 만들라고 제공하는 패키지다.
[ 가상환경 만들기 ]
방법은 Mac, Win 다 동일하다.
terminal 창에서 아래와 같이 입력해주면 가상환경이 만들어진다.
./venv 는 가상환경 다른 거 새로 만들 때 수정하면 된다.
python3 -m venv --system-site-packages ./(가상환경이름)
python3 -m venv : 가상환경을 만들어라
--system-site-packages : 시스템에 기본으로 깔려있는 package 들과 함께
./(가상환경이름) : 이 폴더 안에.
위치를 지정하려면 터미널에서 cd (directory 주소) 로 들어가서 위 문구를 입력한다.
나는 기본 패키지들 처음부터 깔고 싶어서 python -m venv ./venv 로만 입력했다.
[ 가상환경 활성화 하기 ]
터미널에서 가상환경을 설치한 경로에 cd 로 들어가서 아래와 같이 입력한다.
Default 경로에 가상환경 생성했으면 cd (directory) 는 생략해도 된다.
(mac)
source (가상환경 이름)/bin/activate
(win)
(가상환경이름)\Scripts\activate
그럼 아래와 같이 터미널창의 (base) 가 (가상환경 이름) 으로 변경될 것이다. (Mac)
(base) (가상환경 주소) % source (가상환경 주소)/bin/activate
(가상환경 이름) (base) (가상환경 주소) %
Windows 는 (base) 가 원래 없어서 앞에 (가상환경 이름) 만 붙는다.
[ 가상 환경에서 pip install ]
생성된 가상환경에서 아무것도 설치안하면 이렇게 뜬다.
pip list
Package Version
---------- -------
pip 19.2.3
setuptools 41.2.0
만약에 가상환경 생성 시 --system-site-packages 를 포함한다면?
기존 파이썬에 깔렸던거 다 나온다... 너무 많아서 생략.
가상환경을 여러개 만들어서 사용할 거라면 자주 사용하는 패키지들을 메모장에 넣어두고
아래와 같이 입력하면 깔끔하게 기본 패키지들을 설치할 수 있다.
pip install -r requirements.txt
requirements.txt 파일은 터미널/커맨드 창에서 이렇게 생성하고 필요없는걸 지우면 된다.
pip freeze > requirements.txt
난 requirements.txt 에 그냥 요렇게만 반영해뒀다.
pandas
seaborn
matplotlib
numpy
psutil
scipy
[ 가상 환경 종료 방법 ]
(mac) 터미널 창에서 deactivate 를 입력한다.
deactivate
(win) 커맨드창에서 가상환경>Scripts 폴더 내 deactivate.bat 파일을 실행한다.
(가상환경 주소)/Scripts/deactivate.bat
[ 가상 환경 삭제 ]
사실 명령어 말고 그냥 경로로 가서 해당 가상환경 이름 파일 전체 삭제하면 된다.
(mac)
sudo rm -rf 가상환경이름
(window)
이상하게 conda 말고 파이썬 명령어로된 remove는 찾을 수가 없다.
콘다는 요즘 안쓰는 추세라든데...
conda remove -name 가상환경명 --all
2) pipenv / pyenv : python 버전까지 변경이 필요한 경우
사실 인터넷에 찾아보면 pyenv 에 대한 정보가 더 많다. 근데 파이썬에서 pipenv 를 공식적으로 권장한다고 해서
(https://packaging.python.org/en/latest/guides/tool-recommendations/
실제로 22년 이후 포스팅들은 pipenv 에 대한 내용이 더 많다. )
pipenv 로 가상환경 만드는 법을 소개하려고 한다.
[ pipenv 설치 ]
pip install pipenv
[ pyenv 설치 ]
(mac)
brew install pyenv
사용할 파이썬 버전을 설치하기 위해서 pyenv 가 필요하다.
이거로 설치 없이 그냥 pipenv 에서 파이썬 버전별 가상환경을 만들 수는 없다
(근데 이럴 거면 뭐하러 pipenv 를 쓰라는 건지 모르겠다. 어차피 pyenv 설치해야하는데...)
(win)
https://github.com/pyenv-win/pyenv-win
[ 설치할 수 있는 python version 확인 ]
pyenv install --list
[ 원하는 python version 설치 ]
pyenv install 3.7.3
사실 3.7.3 install 을 여러번 설치했는데 에러나서 3.9.1 을 설치해봤더니 된다.. 뭐지..
[ 가상환경 생성 가능한 파이썬 버전 확인 ]
pyenv versions
원하는 python version 이 없으면 위의 pyenv install 로 설치해준다.
[ 가상환경 생성 ]
터미널에서 가상환경 만들 디렉토리에 들어간다.
cd (가상환경 디렉토리)
그 다음 원하는 python 버전을 입력해준다.
pipenv --python 3.x
여기서 만약 에러가 나면 pipenv --rm 을 해주고 그래도 에러가 나면 터미널 실행 경로에 pipfile 을 모두 삭제해주고 다시 해본다.
설치할 때 pipfile 사용해서 package 설치하라고 나오는데 pipfile 은 앞에서 venv 에서 봤던 requirements.txt 와 동일한 기능이다.
requirements.txt 만 있어도 알아서 pipfile 로 변환하여 설치해주긴 한다.
pipenv 환경에서는 공통으로 설치할 패키지는 pipenv install 로 설치하는데,
설치하고나서 pipfile 파일을 확인하면 해당 패키지가 업데이트되어있다.
pipenv install pandas
[ 가상 환경 실행 ]
pipenv shell
python 버전 확인
pipenv run python --version
# 또는
python --version
설치된 패키지 목록 확인
pipenv graph
가상환경 위치 확인
pipenv --venv
가상환경 파이썬 인터프리터 위치 확인
pipenv --py
이걸 알아야 vscode 에서 interpreter 설정이 가능하다.
난 users 폴더의 .local 파일 안에 있었는데 이 숨김 파일은 맥) cmd + shift + . 으로 볼 수 있다.
기타 명령어 정보
pipenv -h
[ 가상 환경 종료 ]
exit
[ 가상 환경 삭제 ]
pipenv --rm
이건 --user 환경 설치 및 환경 변수 설정 방법인데 windows ver 이기도 하고 귀찮아서 안했다. 참고로만 링크.
https://hoohaha.tistory.com/92
어우 pipenv 를 사용한 가상환경 설정은 좀 복잡하다...
3.8 기준으로 venv 부터 잘 사용해봐야겠다.
'코딩' 카테고리의 다른 글
| torch 설치 (0) | 2022.12.29 |
|---|---|
| 구글 코랩(colab)을 알아보자 (0) | 2022.09.07 |
| Global memery usage 확인 방법 in Python (0) | 2022.08.09 |
| CPU 코어 수 확인 파이썬 코드 (0) | 2022.08.09 |
| 다시 jupyter 로... (0) | 2022.06.16 |