아무리 찾아도 가상환경 잘 정리해논 블로그 없어서 답답해서 직접 만든 포스팅
파이썬 버전 / 위치 확인
내가 내 노트북의 파이썬 버전이랑 경로를 모른다!
아래의 코드로 확인 가능하다
# 버전
python -V
python --version
# 경로
which python
아래의 작업을 하려면 python의 경로를 알아야 해서 작성하였다
pip / python VS. pip3 / python3
먼저 파이썬관련 pip 이나 python 명령어가
pip3 python3 인게 너무 거슬렸다
(pip python 은 python 2.x , pip3나 python3는 python 3.x 이렇게 사용하는 것 같은데)
난 싫어....
하면 아래의 명령어를 입력하면 된다
bash환경
echo "alias python=/usr/local/bin/python3" >> ~/.bash_profile
echo "alias pip=/usr/local/bin/pip3" >> ~/.bash_profile
위와 같이 바꿨다가 가상환경을 확인할 때도 local의 pip가 출력이 되어서 곤란했다
그래서 아래와 같이 바꿨다
echo "alias python=python3" >> ~/.bash_profile
echo "alias pip=pip3" >> ~/.bash_profile
zsh 환경
echo "alias python=python3" >> ~/.zshrc
echo "alias pip=pip3" >> ~/.zshrc
#in my case
echo "alias python=python3" >> ~/.zshrc
echo "alias pip=pip3" >> ~/.zshrc
위와 같이 본인의 python 경로를 적어줘야 한다
적용
exec "$SHELL"
해본 사람은 알겠지만 삶의 질이 올라간다
0. 가상환경 overview
제목에서 볼 수 있 듯이 굉장히 많은 도구 들이 있다.
https://aisj.tistory.com/189
[Pytorch] 맥북에 Pytorch 설치
파이썬 버전확인 일단 본인의 파이썬 버전을 확인해주자 python --version python3 --version 먼저 꼬일 수도 있기 때문에 가상환경부터 만들어주자 가상환경 가상환경 만들기 (venv) cd {your directory} cd ~/ pyt
aisj.tistory.com
여기에서는 virtualenv를 다뤘고
https://aisj.tistory.com/126
[환경설정] window에서 가상환경 만들기(venv)
먼저 cmd를 연다음 가상환경을 만들고 싶은 곳에 접근을 한다 cd 디렉토리명 mkdir 작업폴더이름 cd 작업폴더이름 venv를 이용하여 가상환경을 만들 것이므로 venv 실행 (python 과 python3의 명령어 차이
aisj.tistory.com
여기서는 venv
venv는 별도 설치 없이 표준 라이브러리로 제공된다는 점에서 많이 사용합니다.
평소에는 conda를 사용했다
이렇게 사방팔방하다보면 패키지 관리 방법이 달라서 헷갈릴 것이다
그리고 어떻게 가상환경을 만드는 것이 좋은지 얘네 차이가 뭔지 궁금해서 다음 포스팅을 남겼다
conda 와 pyenv의 차이를 디렉토리로 말하면
pyenv는 가상환경을 생성했을 때 .pyenv를 통해서 버전 등을 관리하고 local이 적용된 디렉토리 별로 구분이 된다(밑에의 test디렉토리)
막상 워크스페이스는 .python-version파일 하나만 있다
conda는 생성한 파일들이 miniconda3 혹은 anaconda3 파일 내부의 envs 파일에 가상환경들이 저장되며 가상환경별로 구분된다
아래의 좋은 블로그가 있어서 참고를 하는데 생각하는 우선순위가 다르긴하다 (취향차이)
https://devbull.xyz/python-create-environment/
파이썬 가상환경 비교(pipenv, venv, pyenv, conda)
🖐귀찮은데 그냥 깔면 안돼요? 파이썬은 같은 인터프리터 버전이라면 같은 패키지를 공유한다. 예를 들어 프로젝트 A와 B에서 Python 3.9.4를 사용하고 있다면, A에서 설치한 패키지를 B에서도 사용
devbull.xyz
개인의 생각으로는
Pyenv는 디렉토리별 버전관리(가볍), Conda는 꽤나 간편해서 공부할 때(무겁)
1. pyenv-virtualenv
프로젝트에 여러개의 파이썬 버전이 필요해서 디렉토리 별로 다른 버전을 사용하고 싶을 때 적합
공식 문서
https://github.com/pyenv/pyenv
https://github.com/pyenv/pyenv-virtualenv
pyenv는 플러그인이다 (virtualenv를 좀 더 편하게 사용할 수 있도록 해주는)
내가 생각하는 가장 큰 장점은
- PiP 와 requirements.txt 로 패키지를 관리 한다는 점
- 파이썬 버전을 쉽게 변경할 수 있다는 점
- 디렉토리 별로 버전(가상환경)을 저장해서 가상환경이 자동으로 실행 해준다는 점
무엇보다 큰 장점을 프로젝트 마다 어떤 가상환경을 썼는지 하나하나 기억할 필요가 없다는 점이다
이것들이 pyenv를 사용하는 이유이다
파이썬 버전별로 환경 생성이 가능한 라이브러리
가상환경은 virtualenv 등을 통해 별도로 생성해주어야 한다.
즉, 파이썬 버전 관리 기능을 제공
Windows를 지원x
패키지 관리
pip 와 requirments.txt 로 관리
# 설치
pip install -r requirements.txt
# lock
pip freeze > requirements.txt
라이브러리 다운
아래의 공식 블로그를 참고하자
https://github.com/pyenv/pyenv#installation
Window
window 환경에서는 pyenv를 사용하지 않는 것을 추천합니다
현 시점 기준으로 virtualenv가 작동안하는 것을 확인하였고
이게 pyenv의 치명적인 단점인거 같습니다
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
Powershell을 관리자 모드로 켜준다음 위의 명령어를 입력
확인을 위해 아래의 코드 입력
pyenv --version
다음 명령어를 PowerShell 에 입력해서 환경변수 세팅을 해주자
(출처 : https://thekkom.tistory.com/69)
# STEP 1 :: PYENV 설정
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
# STEP 2 :: PATH에 추가설정 (일반적으로 PYENV 설치 중 자동입력됨)
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
$env:Path
한번 더 bash에서 확인해보면
pyenv install --list | grep "3\.[678]"
우분투
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
맥북
brew update
brew install pyenv
brew install pyenv-virtualenv
brew install readline xz
다운로드 받고 pyenv를 활성화 시켜주자
Mac 의 경우
sudo nano ~/.zshrc
#export PYENV_ROOT=/usr/var/pyenv
#in my case
export PYENV_PATH=$HOME/.pyenv
#bash
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
echo -e 'if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi' >> ~/.bash_profile
#zsh
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
echo -e 'if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi' >> ~/.zshrc
위에 pyenv 경로 같은 경우 사용자 마다 다를 수 있기 때문에 확인이 필요하다
아래와 같이 입력을 해준다음 (Mac 기준)
# >>> pyenv initialize >>>
export PYENV_PATH=$HOME/.pyenv
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
if which pyenv-virtualenv-init > /dev/null; then eval "$(pyenv virtualenv-init -)"; fi
# <<< pyenv initialize <<<
이게 뭐냐고 묻는다면
그냥 하라고 시킨걸 한거다
저장을 해주고 (우분투 : Ctrl + s -> Ctrl + c // Mac : Ctrl + o -> enter -> Ctrl -> x)
source 진행해주고
#bash
source ~/.bashrc
#zsh
source ~/.zshrc
창을 새로고침해주자
exec "$SHELL"
우분투
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
우분투의 경우 아래를 참고하자
https://wikidocs.net/10936
01) pyenv와 가상환경
[TOC] # 파이썬 설치 [파이썬 다운로드 페이지](https://www.python.org/downloads/)에서 윈도우의 경우 Windows x86-64 executab…
wikidocs.net
파이썬 버전 다운로드
장점 중 하나가 파이썬의 버전을 왔다 갔다 할 수 있다는 것이다
다운받을 수 있는 버전 확인
pyenv install -l
pyenv install --list
여기서 버전을 확인한 다음
엄청 많이 나오는데 옵션을 주어서 검색을 할 수도 있다
pyenv install --list | grep "3\.[678]"
다음 명령어로 3.6 3.7 3.8 버전만 선별해서 볼 수 있다
다운로드 받아 주자
pyenv install 3.8.11
list 중에 있는 버전을 install 해주면 된다
다운로드 된 버전 확인
pyenv versions
보면 내 맥북의 python버전은 3.9.6
pyenv에는 3.8.11이 받아져 있다
(system은 내 로컬 컴퓨터에 받아져 있는 파이썬 버전이다)
처음 설치하면 위의 화면이 안뜨는 경우가 있는데 (본인이 그럼) : 아마 system 도 지정이 안되어서 그런 것 같습니다
pyenv global 3.8.11
global 한번 실행해주면 정상작동한다
현재 적용되고 있는 가상환경을 보고 싶으면
pyenv version
주의
pyenv --version
이건 pyenv의 버전이다
삭제하고 싶으면
pyenv uninstall [삭제하고 싶은 버전]
추가로 3.9.6도 pyenv에 받아주면
이런 식으로 관리할 수 있고 *이 현재 활성화 되어 있는 버전이다
만약 3.9.6으로 가상환경을 설정하고 싶으면 아래의 명령어를 실행하면 된다
가상환경 버전 변경
pyenv global 3.9.6
global 을 이용해서 버전을 바꿀 수 있다 (다운로드 받은 버전 중에) : global 은 default 버전을 지정해 준다고 생각하면 된다
가상환경 생성
"pyenv 는 .python-version 파일을 이용하여서 디렉토리 마다 가상환경을 지정한다"
1. global(default) 버전 이용
pyenv virtualenv [가상환경이름]
pyenv virtualenv venv
이렇게 지정하면
위에 적혀있는 경로 /Users/seungjong/.pyenv/version 파일에 들어가보면
정상적으로 적용된 것을 볼 수 있다 (version파일은 현재 실행되고 있는 파이썬의 버전이다)
즉, default 인 3.8.11 버전을 이용해서 venv라는 이름의 가상환경을 만든 것이다
2. 버전을 직접 지정 (versions에 있는 것 중)
pyenv virtualenv [파이썬 버전] [가상환경이름]
pyenv virtualenv 3.9.6 venv_3.9
이게 재밌는게 뭐냐면 플러그인을 이용했기 때문에
경로를 보면 .pyenv폴더 안에 가상환경이 생긴다
예전에 virtualenv로 직접 만들었던 가상환경인 "torch"의 경로를 확인해 보면
만들 때 지정했던 위치 ~/ 이다
이러한 차이가 있다
가상환경 활성화
활성화
활성화 하는 방법은 다음 세가지가 있다고 한다 (local을 사용하자)
여기서 local을 통해 디렉토리별로 가상환경을 지정할 수 있는데
명령어는 다음과 같다.
cd [가상환경을 적용하고 싶은 곳]
pyenv local [가상환경명]
여기서 알아야 할 것은 언급을 했듯이 "디렉토리 별로 관리"가 가능해서 적용하고 싶은 디렉토리로 이동을 한다음 local을 지정해야 한다
위에 말이 이해가 안되면 다음과 같은 예시를 통해 알 수 있다
다음과 같이 버전이 다른 두 버전의 가상환경을 만들었다고 가정하자
pyenv install 3.9.10
pyenv virtualenv 3.9.10 venv
pyenv install 3.9.5
pyenv virtualenv 3.9.5 venv2
Home 폴더를 기준으로 다음과 같은 환경세팅을 해보자
<디렉토리명 (가상환경명 )>
Home (system)
├── ........
├── test(venv)
└── test3_9_5(venv2)
pyenv global system
(현재 global로 system 이 지정되어 있는 상태이다)
아래와 같이 디렉토리를 만들고 접근을 한 다음 local로 가상환경을 지정해주면 된다
#Home 디렉토리로 이동
cd ~/
#test디렉토리에 venv 적용
mkdir test
cd test
pyenv local venv
#test3_9_5 디렉토리에 venv2 적용
mkdir test3_9_5
cd test3_9_5
pyenv local venv2
이렇게 지정을 해준다면 각각의 디렉토리에
.python-version 이라는 파일이 생기고 내용을 보면 적용된 가상환경이 적혀있다 (이 파일을 이용해서 자동으로 가상환경을 load한다)
완성된 구조는 다음과 같다
Home (system)
├── .python-version (->system)
├── ........
├── test(venv)
└──.python-version (->venv)
└── test3_9_5(venv2)
└──.python-version (->venv2)
이렇게 완성되면 다음과 같이
디렉토리를 이동만 해도 가상환경이 자동으로 적용이 된다
또한 아무것도 깔지 않았으므로 다음 명령어를 실행시키면
pip list
이렇게 두개만 나오게 된다
비활성화
pyenv local --unset
가상환경/파이썬 버전 삭제
pyenv uninstall [가상환경명]
마찬가지 방법으로 파이썬 버전도 지울 수 있다
pyenv 명령어 정리
위에서 local global 이런식으로 헷갈릴 수도 있는데 우선순위는 다음과 같다 (위로 갈 수록 높은 순위)
개인적으로 global을 system으로 하고 각 디렉토리마다 local 로 지정하는 것이 베스트인 듯 하다
프로젝트에 다양한 모델을 가져와서 다양한 파이썬 버전을 사용해야 할 때 유용하다
2. Conda
비교적 쉬운 편이여서 가볍게 공부를 하거나 혼자서 프로젝트 진행할 때 적합
머신러닝, 데이터과학 분야의 다양한 라이브러리들이 설치된 런타임인 아나콘다 파이썬에서 기본적으로 제공되는 가상환경 모듈이다. 하지만 굳이 아나콘다를 사용하기보다 깨끗한 파이썬에 의존성을 새로 설치하는 게 더 가볍고 정확하기 때문에 별로 추천하지는 않는다.
위에 문장은 (https://devbull.xyz/python-create-environment/) 이 출처에서 인용해 온 말이다.
사실 위의 말에 아직까진 공감하진 못하지만 뭐 그렇다고 하니...
근데 아래의 그림은 이해가 되긴한다.
python 버전관리가 conda는 아무래도 힘들긴 하다
근데 그때마다 그냥 생성 삭제 생성 삭제 해주면 되지 않나 싶지만
옛날 내 window 노트북에 로컬에 python 버전만 3개 깔린 경험도 있긴해서 고민이 되긴하다...
(하지만 편한 걸...)
가장 큰 단점은 아래와 같다고 생각한다 (장점이자 단점)
conda는 기본적으로 깔리는 패키지 들이 많다 (데이터 분석에 필요한 numpy, matplotlib 등등)
이렇기 때문에 가상환경을 여러개 만들었을 때 용량을 크게 차지하고
또한 패키지 관리가 힘들어서 requirement등을 만들 때 골치아프다
내 생각은 이렇기 때문에 배포나 팀플에서는 비권장하지만
그냥 가볍게 공부할 때는 이만한게 없는거 같다
심지어 pip랑 requirements.txt 로 패키지 관리를 한다
패키지 관리
# 설치
pip install -r requirements.txt
# lock
pip freeze > requirements.txt
라이브러리 다운
설치는 다음 포스팅에서와 같이 아나콘다를 설치했으면 된다
https://aisj.tistory.com/190
[Python] 맥북에 Jupyter notebook, anaconda(miniconda)설치
아래의 사이트를 들어가자 https://docs.conda.io/projects/conda/en/main/user-guide/install/macos.html Installing on macOS — conda 0.0.0.dev0+placeholder documentation To run the silent installation of Miniconda for macOS or Linux, specify the -b
aisj.tistory.com
여기서 고민이 되는 것은 miniconda 와 Anaconda 이다
그냥 쉽게 비교를 하자면
- miniconda : 가볍다 . 필요한 라이브러리를 다운 받아야한다 . 파이썬 버전이 한정적이다. 관리가 편하다
- Anaconda : 무겁다. 기본으로 제공되는 라이브러리들이 많다. 파이썬 버전이 다양하다. 공부할 때 편하다
나 같은 경우는 패키지 관리와 용량 제한 때문에 mini conda를 다운 받았다.
https://docs.conda.io/en/latest/miniconda.html
Miniconda — conda documentation
Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda in
docs.conda.io
여기에서 다운로드 받은 다음에
latest Mac M1 Pkg를 다운 받았다.
다운 받고 업데이트 한번 해주자
conda update conda
다운로드를 받으면 자동적으로 우분투는 bashrc, Mac은 zshrc에 다음과 같은 문구가 생긴다
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/seungjong/miniconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/Users/seungjong/miniconda3/etc/profile.d/conda.sh" ]; then
. "/Users/seungjong/miniconda3/etc/profile.d/conda.sh"
else
export PATH="/Users/seungjong/miniconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
만약 안생기거나 터미널에 다음과 같이
어떤 가상환경이 실행되고 있는지 (default가 base) 안뜬다면 위에를 복사해서 적어보고 그래도 안되면 다시 다운받아보자
지금 base가 자동으로 실행되게 설정이 되어있는데
이게 골치가 아픈것이 터미널을 그냥 다시 열어도 자동으로 conda가 실행된다
오해를 하면 안되는 것이 base가 가상환경이 없는 것이 아닌 "base"라는 가상환경이 실행되고 있는 것이다
그래서 패키지가 꼬이는 것을 방지하기 위해 conda 가 자동실행되는 것을 꺼주자
conda config --set auto_activate_base false
만약 false를 true로 바꾸면 다시 키는 것이다
그냥 임시로 끄고 싶으면
conda deactivate
가상환경 위치
이 또한 관리를 위해서 만들 디렉토리로 이동할 필요가 없다
그 이유는 가상환경이 저장되는 위치가
본인이 다운받은 miniconda3 혹은 anaconda3파일의 env 폴더에서 관리되기 때문이다
이런 식으로 jw, testtest라는 두개의 가상환경이 여기에 있는 것을 확인할 수 있다.
지원하는 파이썬 버전 검색
아나콘다는 상관없이 쓰겠지만
miniconda는 아나콘다를 꽤나 경량화 시킨 모델이기 때문에
지원하는 파이썬 버전이 한정적이다
그래서 검색을 통해 어떤 버전을 지원하는 지를 알아야 한다
conda search python
그래서 확인을 해보면
legacy한 버전이나 자주 사용하는 버전은 지원 안하는 것으로 보인다 ex) 3.10.5, 3.7 ~
근데 매번 이렇게 찾는 것이 귀찮으면 다음 명령어를 통해서
필터를 추가해 볼 수있다
#3.8 만 보고 싶을때
conda search python | grep " 3\.8"
#3.8 3.9 만 보고 싶을 때
conda search python | grep " 3\.[89]"
가상환경 생성
파이썬 버전을 검색했으면 가상환경을 만들어 보자
conda create -n [가상환경 이름] python=[파이썬 버전]
conda create -n vir_conda python=3.8.11
얘네들이 착한게 다음 할 일도 알려준다 (아래의 화면이 뜨면 성공이다)
가상환경 활성화
conda activate [가상환경명]
파이썬을 실행시켜서 버전을 확인해보면
정상적으로 3.8.11 이 들어간 것을 볼 수 있고
가상환경이 저장되는 위치에 들어가서 확인해보면
#miniconda
cd ~/miniconda3/envs
ls
#anaconda
cd ~/anaconda3/envs
ls
정상적으로 저장된 것을 볼 수 있다
참고로 default를 실행시키고 싶으면
conda activate base
또한 당연하겠지만 아무것도 깔지 않았으므로 다음 명령어를 실행시키면
pip list
이렇게 기본적인 것만 깔려 있다
비활성화
conda deactivate
가상환경 목록
conda env list
conda info --envs
패키지 확인
conda list
이것들이 기본으로 깔려있다 (기본적으로 anaconda에 깔려져 있는 것)
pip list
두개를 구분없이 사용하는 사람이 있는데 구분을 하는 것이 좋다
pip install vs. conda install
pip : python의 정식 지원을 받는 패키지만을 관리하는 관리자 (python 한정)
conda : anaconda에서 지원 받는 패키지 만을 관리하는 관리자입니다 (python 외에 c, java 등이 포함)
원칙을 정해서 pip 와 conda 를 구분해서 사용한다면 문제가 안생기고
귀찮으면 나같이
1. base 환경에서 작업하지 않는다
2. 가상환경을 만들어서 사용한다
3. 가상환경 내에서 pip를 이용한다
이런식으로 관리하면 될 것 같다 (정해진 것은 없다)
conda update --all 이런 명령어로 패키지의 버전을 한번에 업데이트 할 수 있다는 것? 정도
가상환경 삭제
conda remove -n [가상환경이름] --all
참고로 pyenv랑 호환안되니 오해하지 말자
심지어 두개도 실행되서 골치아픈 상황을 조심하자
위의 상황은 진짜 패키지 어떻게 될지 모르는 숨막히는 상황이다
3. virtualenv
본인의 파이썬 버전과 동일한 여러개의 가상환경을 만들기에 적합(+ 가상환경 폴더를 만들고 싶을때)
패키지 관리
pip 와 requirments.txt 로 관리
# 설치
pip install -r requirements.txt
# lock
pip freeze > requirements.txt
라이브러리 다운
# library download
pip install virtualenv virtualenvwrapper
# upgrade
/Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip
위에 코드로 라이브러리를 다운받은 다음
가상환경 생성
virtualenv같은 경우는 pyenv와 conda와는 다르게 가상환경을 만들 디렉토리로 이동을 하여서 작업해야 안꼬인다
(현재의 디렉토리에 가상환경을 뱉어내기 때문)
아래에 이유가 나오지만 헷갈리지 않으려면 "home 디렉토리에서 작업하는 것을 추천한다"
#디렉토리로 이동
cd ~/
python3 -m virtualenv --python={your python version} {your venv name}
#in my case
python3 -m virtualenv --python=3.9.4 torch
만약 본인의 파이썬 버전이 아닌 다른 버전을 입력하면 (ex) 3.8 아래와 같은 오류를 받는다
RuntimeError: failed to find interpreter for Builtin discover of python_spec='3.8'
여러 버전을 사용하고 싶으면
아래의 링크로 들어가서 본인이 사용하고 싶은 파이썬 버전을 직접 다운 받은 다음 만들어야 하는 번거로움이 있다
+ 첨언
이러한 이유 때문에 다른 stackflow를 보면 다음과 같이 실행하라고 하는 이유이다
https://stackoverflow.com/questions/1534210/use-different-python-version-with-virtualenv
mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install
#for make virtual env
cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate
참고로 위에 있는 명령어는 그냥 예시로 받아드리자 (안해봤다)
그래서 위에서 언급했듯이 내 컴퓨터에 있는 파이썬 버전과 동일한 버전의 가상환경 여러개 만들때 효과적인 것 같다
가상환경 활성화
이 활성화 하기 위해서는 가상환경을 만들었을 때의 디렉토리로 이동을 해야 하고 이것 때문에 home 디렉토리에서 작업하는 것이 편하다고 했던 것이다
source [가상환경명]/bin/activate
source torch/bin/activate
비활성화
deactivate
장점 / 단점
가장 골치거리인게 가상환경 이랍시고 본인의 파이썬 버전이 아니면 생성이 안된다... (내가 못하는 거일 수도)
근데 한번 만들어서 아래와 같이 jupyter notebook 연동하면 꽤나 편리해서 현재 사용하고 있긴 하다
또한 이렇게 가상환경 디렉토리가 내가 원하는 위치에 생겨서 편리하기도 하다
즉, 한번 만들어 놓으면 편하다
4. venv
python에 기본으로 내장되어 있는 가상환경 모듈 (별도의 설치 필요 x)
패키지 관리
pip 와 requirments.txt 로 관리
# 설치
pip install -r requirements.txt
# lock
pip freeze > requirements.txt
가상환경 생성
이 또한 가상환경이 작업 중인 디렉토리에 만들어지기 때문에 만들 위치로 이동해야 한다 (Home을 추천)
cd {your directory}
cd ~/
python3 -m venv ./{your venv name}
만약 다른 버전의 python 버전으로 만들고 싶다면
본인의 로컬 컴퓨터의 파이썬 버전을 바꿔야 한다
맥북인 경우 다음과 같이 바꿀 수 있다
로컬 파이썬 버전 바꾸기(Mac)
먼저 파이썬이 설치된 위치를 확인하자
가끔 내 컴퓨터와 같이 local 폴더가 없는 경우도 있다
ls -l /usr/local/bin/python*
ls -l /usr/bin/python*
본인 같은 경우는 python3 에 3.9.6 버전이 있는데
만약 /usr/bin/python3.8 이라는 폴더가 있다고 가정한 다면(python3.8을 받았을 경우)
다음 명령어로 바꿀 수 있다
ln -s -f /usr/bin/python3.8 /usr/local/bin/python3
가상환경 활성화
해당 디렉토리로 이동한 다음(만든 디렉토리)
source 가상환경이름/bin/activate
비활성화
deactivate
프로젝트단위로 다른 패키지를 설치할때 사용하는 가상환경
4. pipenv
pip + virtualvenv
(공식으로 지원하고 장점도 많지만 내가 잘 사용하지 않는 이유는 pipfile.lock 에 대한 두려움이다)
이거 많고는 꽤나 좋은 가상환경을 만드는 방법이여서 추천을 하기도 한다
패키지 관리
pipenv 와 pipfile.lock 으로 관리
# 패키지 다운로드
pipenv install numpy pandas matplotlib
#패키지 load
pipenv install
#패키지 lock
pipenv lock
이런식으로
라이브러리 다운
아래의 명령어를 통해 pipenv를 다운받아 주자
#우분투
pip install pipenv
#Mac
brew install pipenv
이렇게 해도 되지만 맥북도 pip로 다운로드가 되는 것 같다
그래서 본인이 파이썬 버전이 없다면 brew하는 것을 추천하지만
만약에 사용하던 파이썬이 있다면 pip 로 받자 (자동으로 python 최신 버전이 같이 다운 받아진다)
그 이유는 다음과 같다
갑자기 파이썬 버전이 바껴버리는 어지러운 상황
Homebrew로 설치된 파이썬 지우기
brew uninstall python3
이렇게 골라서 삭제해 준다 python3.11 이런 파일들 있었음
저 파이썬 파일은 그냥 손수 지웠다
가상환경 생성
이 또한 가상환경을 만들 위치를 정해 줘야하기 때문에 원하는 디렉토리를 이동 먼저 해야한다
가상환경 폴더를 직접 만들어야 한다
mkdir [가상환경이름] && cd [가상환경이름]
이렇게 만들어진 디렉토리는 그냥 빈 껍데기이기 때문에 파이썬 버전을 지정하면 된다
얘도 문제인 것이 로컬에 저장되어 있는 파이썬 버전 중에 선택해야 한다는 단점이 있다
pipenv --python [파이썬 버전]
pipenv --python 3.9.6
이렇게 한다면 파일을 열어보면
이렇게 pipfile 하나가 생긴다
열어보면
cat pipfile
이렇게 가상환경이 정상적으로 만들어 진것을 확인 할 수 있다
가상환경 삭제
pipenv --rm
가상환경 활성화
해당 디렉토리로 이동한 다음(만든 디렉토리)
# Run shell
pipenv shell
# Rum custom commands
pipenv run COMMANDS...
shell 의 경우 가상환경이 활성화된 터미널을 열어주는 것이고
이렇게 가상환경 디렉토리로 이동을 하여서 shell을 쳐 주면된다.
run 같은 경우는 스크립 또는 명령어를 가상환경에서 실행만 하고 가상환경을 활성화하지 않는 방법이다
파이썬 버전이 바뀐 모습
비활성화
exit
pipfile
pipfile은 다음과 같다
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
bs4 = "*"
selenium = "*"
requests = "*"
cloudinary = "*"
[dev-packages]
python-dotenv = "*"
[requires]
python_version = "3.9"
[packages] 는 어떤 패키지들이 다운 받아졌는 지를 보여주는 명세이다
뒤에 버전이 아닌 "*"으로 되어 있는 것은 최신 버전을 불러 오겠다라는 뜻이다
[dev-packages]는 개발 환경에서만 필요한 패키지를 의미한다
이러한 이유로
[packages]는 실제 프로그램이 동작할 때 필요한 패키지 리스트여서 실제 배포할 때 반드시 포함해야 하는 리스트이고
[dev-packages]는 개발이나 테스트 시 필요한 패키지 리스트 이기 때문에 실제 배포시 포함시키지 않는 리스트 이다.
pipfile을 자동으로 찾아서 프로젝트 홈을 찾는다
pipfile.lock 은 처음에는 안뜨는데 만약 패키지를 다운 받는 다면 생긴다
lock 파일로 패키지 관리를 하면 다음과 같은 장점이 있다.
- virtualenv로 가상환경을 생성하면서 pip으로 패키지를 자동으로 설치한다.
- lock파일의 해쉬로 안전한 버전 관리가 가능하다. (pipfile은 읽을 수 있지만 lock파일을 열면 읽을 수가 없다)
- pip으로 패키지를 설치/추가하면 자동으로 pipfile에 변경사항이 반영된다.
이러한 성질 때문에 보안에 강하다
첫번째가 아마도 python일 것이다
5. miniforge
사내에서는 anaconda를 유로버전을 사야해야해서 대처할 수 있는 것이 뭐가 있을까 고민하다가
miniforge를 사용해보고자 합니다.
아래의 링크에 들어가서
https://github.com/conda-forge/miniforge
GitHub - conda-forge/miniforge: A conda-forge distribution.
A conda-forge distribution. Contribute to conda-forge/miniforge development by creating an account on GitHub.
github.com
윈도우 버전을 클릭
실행파일을 실행시키고 다운로드 받은 다음 아래의 명령어로 다운로드가 잘 되었는지를 확인
conda env list
python --version
python version의 경우 다운로드 창을 읽어보면 3,10.*로 다운 받겠다라는 옵션이 있다
다음을 확인하고 아래의 그림과 같은 경로에 가보면
ProgramData안에 miniforge3가 있고 이안에 python.exe가 있는 것을 볼 수 있다
이 경로를 확인하는 이유는 VSC 와 연동을 하기 위해서 이다
Visual Studio Code 연결
Command Pallete (Ctrl + Shift + P)를 열고
Python: Select Interpreter
를 검색해서 들어간다.
그러면
아까 옵션으로 다운 받았던
python base환경을 볼 수 있다 (클릭)
그 다음 환경변수를 추가해 줄건데
내 PC 오른쪽 마우스 > 속성
정보 > 고급 시스템 설정
환경변수 클릭
그 다음 PATH 누르고 새로 만들기
다음 3개의 경로를 확인해서 추가해주자
C:\ProgramData\miniforge3 (폴더)
C:\ProgramData\miniforge3\Library (폴더)
C:\ProgramData\miniforge3\Scripts (폴더)
이런 식으로
그 다음
VSC에 들어가서 Ctrl + , > "python 검색"
Conda path 에 본인의 .conda 폴더 위치를 추가하고
VSC를 전부다 끄고 다시 켠 다음 터미널에서
conda env list
치면 잘 들어온다
쥬피터 노트북과 연결
우리가 자주 사용하는 것이 .py 와 .ipynb 이다
그래서 가상환경을 주피터 노트북과 연결을 해 놓으면 좀 더 편하게 가상환경을 사용할 수 있다
라이브러리 다운로드
먼저 쥬피터노트북을 다운 받자 (신기하게 쥬피터 & 노트북임)
pip3 install jupyter notebook
그 다음 가상환경과 쥬피터 노트북을 연결해 주자
# pipenv
pipenv run python3 -m ipykernel install --user --name {가상환경 이름} --display-name "{표시할 이름}"
# 그 외
python3 -m ipykernel install --user --name {가상환경 이름} --display-name "{표시할 이름}"
주피터 노트북 연결
#in my case (virtualenv)
python3 -m ipykernel install --user --name torch --display-name "torch"
#in my case (pyenv)
python3 -m ipykernel install --user --name venv --display-name "venv"
#in my case (pipenv)
pipenv run python3 -m ipykernel install --user --name my_pipenv_venv --display-name "pipenv"
#만약에 로컬에 쥬피터 노트북을 install했으면 다른 것과 동일하게 해도 된다
#in my case (conda)
자동으로 주피터 노트북에 생김
이제 잘 되었는지 확인을 해보면
(앞에서 conda 환경의 base에서 jupyter를 다운 받았기 때문에 base에서 실행했다)
conda activate base
jupyter notebook
여기서 들어가 보면
만들어 진 것이 잘 올라갔다
또한 다음 다운로드로 jupyterlab으로 열어볼 수 있다.
pip install jupyterlab
만든 가상환경들이 생긴 것을 확인할 수 있다.
주피터 노트북 연결해제
jupyter kernelspec uninstall [가상환경 명]
주피터 노트북 가상환경(커널) 확인
jupyter kernelspec list
참고 자료
https://devbull.xyz/python-create-environment/
파이썬 가상환경 비교(pipenv, venv, pyenv, conda)
🖐귀찮은데 그냥 깔면 안돼요? 파이썬은 같은 인터프리터 버전이라면 같은 패키지를 공유한다. 예를 들어 프로젝트 A와 B에서 Python 3.9.4를 사용하고 있다면, A에서 설치한 패키지를 B에서도 사용
devbull.xyz
(이 블로그가 꽤나 도움이 되었지만 안되는 명령어들이 많아서 그냥 흐름 정도 참고하면 될 것 같다)
추가...
이건 그냥 뭔가 이뻐서 가져왔다 (나중에 프롬포트 꾸밀 때 써야지)
_ _ _ _
| | | |_ __ __| |__ _| |_ ___
| |_| | '_ \/ _` / _` | _/ -_)
\___/| .__/\__,_\__,_|\__\___|
|_|
'환경설정' 카테고리의 다른 글
VSC REMOTE View Setting (0) | 2024.07.26 |
---|---|
VSC Bash 터미널 세팅 (1) | 2024.07.23 |
[Python] 맥북에 Jupyter notebook, anaconda(miniconda)설치 (0) | 2023.06.05 |
[Pytorch] 맥북에 Pytorch 설치 (0) | 2023.06.05 |
우분투 20.04에서 Pytorch 설치 (0) | 2023.05.17 |