윈도우에 만드는 파이썬 개발 환경; 1. pyenv로 여러 버전의 파이썬 설치
윈도우에 만드는 파이썬 개발 환경
1. pyenv로 여러 버전의 파이썬 설치
3. 아나콘다 없이 무료로 Jupyter notebook 설치
0. 파이썬, 그냥 설치하면 안 되나?
윈도우에서 파이썬을 실행하면 Microsoft Store로 연결되고, 바로 다운로드해서 설치할 수 있다. Store의 검색창에 python을 입력하면 다양한 버전의 파이썬을 선택해서 설치하는 것도 가능하다.
하지만 이렇게 설치한 파이썬은 개발자가 직접 관리하는 데에 한계가 있다.
- 예를 들어, Keras로 개발된 딥러닝 모델을 테스트해 보려면 Keras버전과 Tensorflow버전을 맞춰야 하는데, 잘못된 버전을 설치하면 내부 패키지들의 의존성에 문제가 생겨 실행이 되지 않을 수도 있고.
- 잘못된 부분을 고치려고 파이썬을 여러번 설치하고 삭제하다 보면 삭제되지 않고 남겨진 패키지들로 인해 더 이상 파이썬을 정상적으로 사용할 수 없게 되는 경우도 발생한다.
- 심지어, 우분투 같은 리눅스나 Mac OS에서는 시스템 명령의 일부가 파이썬으로 되어 있어 기본 설치된 파이썬에 패키지를 잘못 추가하거나 삭제하면 OS 명령이 제대로 동작하지 않는 경우도 발생한다.
이런 문제를 해결하기 위해 파이썬의 개발/실행을 분리할 수 있는 가상환경이 나왔고, 이 중 대표적인 venv는 이제 최신 버전의 파이썬을 설치하면 기본으로 포함되어 있다. 하지만 venv로 여러 버전의 파이썬을 유지하는 것은 pyenv에 비해 여전히 불편하기 때문에 파이썬의 버전은 pyenv로 관리하는 것이 편리하다. 그래서 나는 파이썬의 버전은 pyenv로 개발을 위한 가상환경을 venv로 구분하여 관리하고 있다. 이제
- pyenv로 여러 버전의 파이썬을 설치, 관리하는 것에서부터
- venv로 가상환경을 만들고 개발환경을 분리해서 것까지
기억을 정리해 보기로 했다.
1. pyenv
pyenv는 여러 버전의 파이썬을 설치하고 쉽게 바꿔서 실행할 수 있도록 도와준다. 예를 들어 특정 프로젝트 폴더에서는 파이썬 2.7로 실행하고, 이전에 개발된 pytorch 프로젝트 폴더에서는 파이썬 3.4로, 나머지 환경에서는 최신 버전인 3.12로 실행하는 것을, 하나씩 버전을 지정하지 않아도 자동으로 해 준다. 다시 말해 pyenv를 사용하면
- 여러 버전의 파이썬을 설치하고,
- 필요할 때마다 파이썬 버전을 바꿔서 실행할 수 있는데,
- global 파이썬 버전(전체 시스템에서 사용하는 파이썬)을 지정할 수도 있고,
- local 파이썬 버전을 지정해 폴더(프로젝트)별로 다른 파이썬 버전을 사용할 수도 있다.
하지만, 이런 장점에도 불구하고 pyenv는 xNIX계열의 운영환경, 즉 우분투와 같은 리눅스 계열과 Mac OS에서만 사용할 수 있었다. 다행히 Kiran Kumar Kotari가 ruby를 위한 rbenv-win을 기반으로 pyenv-win을 만들어 pyenv기능을 윈도우에서도 사용할 수 있게 되었다.
2. pyenv-win 설치
아래는 pyenv-win의 공식 gibhub페이지의 링크이다.
Installation
pyenv for Windows. pyenv is a simple python version management tool. It lets you easily switch between multiple versions of Python. It’s simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.
pyenv-win.github.io
공식페이지에 따르면 pyenv-win을 설치하는 방법은
a. PowerShell을 사용하는 방법
아래 명령을 넣으면 실행되는데,
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에 붙혀넣기를 해서 실행하면
UnauthorizedAccess오류가 발생했고, 이 경우 PowerShell을 관리자 권한으로 실행해서 아래 명령을 먼저 실행하고,
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
다시 위의 Invoke-WebRequest... 명령을 실행하면 된다.
b. Git을 사용하는 방법
하지만, 보안적인 측면을 고려해서 개인적으로 이렇게 내 컴퓨터를 외부에서 실행할 수 있도록 설정하도록 하는 것을 선호하지 않기 때문에 번거롭더라도 나는 Git명령을 사용해서 설치했다.
가. 먼저 git명령을 사용해서 pyenv프로그램을 .pyenv폴더에 복사한다.
git clone https://github.com/pyenv-win/pyenv-win.git "%USERPROFILE%\.pyenv"
나. PowerShell을 사용해서 PYENV, PYENV_HOME, PYENV_ROOT변수를 설정하고 PATH에 경로를 추가한다.
- PYENV환경변수 설정
[System.Environment]::SetEnvironmentVariable('PYENV',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
- PYENV_HOME환경변수 설정
[System.Environment]::SetEnvironmentVariable('PYENV_ROOT',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
- PYENV_ROOT환경변수 설정
[System.Environment]::SetEnvironmentVariable('PYENV_HOME',$env:USERPROFILE + "\.pyenv\pyenv-win\","User")
- PATH에 pyenv-win프로그램의 경로를 추가
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\bin;" + $env:USERPROFILE + "\.pyenv\pyenv-win\shims;" + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
다. 또, 일반적으로 많이 사용하는 "시스템 속성"창을 이용하는 방법도 있다.
Win+R입력창에 "sysdm.cpl"을 넣고 실행해서 "시스템 속성"창을 열고 고급/환경변수설정으로 가서 PATH에 추가한다.
라. 환경변수들이 적용될 수 있도록 다시 로그인 하거나, 윈도우를 reboot 한다.
c. 이미 설치되어 있는 python, pip을 이용하는 경우
pip install pyenv-win --target %USERPROFILE%\.pyenv
패키지가 복사되면 Git방식에서처럼 환경변수를 설정한다.
3. pyenv로 파이썬 설치
a. 파이썬 3 버전의 최신 버전을 설치한다.
pyenv install 3
이렇게 3만 지정하면 생략된 하위 버전은 최신버전을 선택해서 설치한다. 만일 3.12.4라고 지정하면 해당버전의 파이썬이 설치된다. global 또는 local을 지정하지 않았기 때문에 설치만 되었고 사용할 수는 없다. 만일 python을 실행하려고 하면,
No global/local python version has been set yet. Please set the global/local version by typing:
pyenv global 3.7.4
pyenv local 3.7.4
이렇게 버전을 지정하라고 나온다. 재미있는 것은 python.bat이 아니라 python만을 입력하면 Microsoft Store로 이동하고 python을 다운로드/설치하라고 유도한다. 이 문제를 해결하기 위해서는 아래의 "4. 파이썬 alias 해제와 설정"을 참고하면 된다.
b. global 또는 local 지정하기
먼저 설치된 python버전을 확인한다.
pyenv versions
설치된 버전 중 하나를 모든 곳에서 사용하려면 global을 지정한다.
pyenv global 3.12.4
또 새로운 버전의 파이썬을 특정 폴더에서 사용하려면, 먼저 폴더를 만들고, 폴더로 이동해서, install을 하고 local버전을 지정하면 된다.
mkdir myproject
cd myproject
pyenv install 2.7
pvenv local 2.7.18
uninstall 등 나머지 pyenv의 사용법은 pyenv명령을 치면 확인해 볼 수 있으니 참고해서 사용하면 된다.
4. 파이썬 alias 해제와 설정
a. 윈도우에서 파이썬 alias 해제하기
윈도우는 몇 가지 프로그램에 대해 "앱 실행 별칭"(alias)가 설정되어 있는데, 그중 python.exe, python3.exe는 "앱 설치 관리자"로 기본적으로 설정되어 있다. 이 설정만 끄면 python이라고 입력했을 때 문제없이 pyenv에서 설정한 파이썬이 실행된다.
앱 실행 별칭을 끄려면 "설정"화면에서 "앱"을 선택하면 "앱 및 기능"아래 "앱 실행 별칭"(app execution aliases)을 누르면
앱 실행 별칭 화면이 나타난다.
화면의 아래에 보면 보이는 "앱 설치 관리자" python.exe와 아래 python3.exe를 끄면 python을 입력했을 때 이제 더 이상 Microsoft Store로 이동하지 않는다.
b. Git Bash에서 python alias 설정하기
만일 git bash를 사용한다면, 이 방법으로도 python이 실행되지 않을 수 있다. 이럴 경우 .bash_profile에 alias를 추가하면 간단히 해결된다.
...
alias python python.bat
alias pip pip.bat