윈도우에서 파이썬 개발 시 버전이나 라이브러리 충돌이 발생하는 문제를 자주 겪을 수 있습니다. 필자는 맥에서 pyenv
를 통해 이러한 문제를 해결했지만 윈도우에서는 pyenv
가 동작하지 않아 pyenv-win
과 venv
를 활용하여 파이썬 개발환경을 구축하게 되었습니다. 이 글에서는 윈도우 환경에서 pyenv-win
과 venv
를 사용해 파이썬 개발 환경을 설정하고 사용하는 방법을 자세히 설명하려 합니다.
맥에서 pyenv를 사용해 파이썬 버전을 관리하는 방법은 맥북의 파이썬 개발 환경 최적화 : pyenv으로 파이썬 버전 관리하기 와 Pyenv와 requirements.txt를 활용하여 파이썬 가상 환경 복제하기 글을 확인해 보시기 바랍니다.
pyenv-win 사용하기
pyenv
는 파이썬 버전 관리 도구로 여러 버전의 파이썬 간에 쉽게 전환할 수 있게 해줍니다. pyenv-win
은 윈도우 사용자를 위한 pyenv
버전으로 자세한 내용은 GitHub – pyenv-win 페이지에서 확인할 수 있습니다.
설치
pyenv-win
을 설치하는 방법은 여러가지 방법이 있으나 가장 간단한 설치 방법은 Windows PowerShell
을 사용하는 것입니다. Windows 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"
다음과 같은 오류가 발생하면 이후 과정을 추가로 진행하십시오.
& : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\Admin\install-pyenv-win.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. 위치 줄:1 문자:173 + ... n.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1" + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : 보안 오류: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
먼저 Windows PowerShell
을 관리자 권한으로 실행합니다.
다음 명령어로 정책을 변경한 후 설치를 재시도 하세요.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
아래 스크린샷과 동일한 결과가 나오면 설치에 성공한 것입니다.
사용방법
설치에 성공했으면 이제부터 사용해 보도록 하겠습니다.
먼저 설치 가능한 파이썬 버전을 확인합니다.
pyenv install -l
설치 가능한 파이썬 버전들을 확인할 수 있습니다.
만약 원하는 파이썬 버전이 리스트에 없다면, update
명령을 통해 리스트를 갱신하세요.
‼️ 참고로 맥에서는 설치가 가능하나 pyenv-win
에서는 지원되지 않는 일부 버전들이 있었습니다.
pyenv update
특정 버전의 파이썬 버전을 검색하는 경우 다음과 같은 명령어를 사용할 수 있습니다.
다음과 같이 3.10
번대 버전들만 확인할 수도 있습니다.
pyenv install -l | findstr 3.10
확인된 파이썬 버전 중 3.11.9
버전을 설치해 보겠습니다.
동일한 방식으로 여러 파이썬 버전을 설치할 수 있습니다.
pyenv install 3.11.9
설치에 성공한 것을 확인할 수 있습니다.
원하는 파이썬 버전을 글로벌(시스템 기본)로 설정 하려면 다음 명령어를 사용합니다.
파이썬 버전 설정은 이미 설치된 버전들 중에서만 가능합니다.
pyenv global 3.11.9
특정 버전을 사용하려는 폴더에서 다음 명령어를 실행하면 해당 폴더의 파이썬 버전을 지정할 수 있습니다.
앞서 글로벌로는 3.11.9
버전이 설정되어 있지만 다음과 같이 현재 폴더만 3.12.3
으로 설정이 가능합니다.
pyenv local 3.12.3
기타 명령어
현재 사용 중인 파이썬 버전과 경로를 확인할 수 있습니다.
pyenv version
설치된 파이썬 버전들을 확인하려면 다음 명령어를 사용합니다.
pyenv versions
설치된 파이썬 버전들 중 삭제를 원하는 경우 다음과 같이 삭제할 수 있습니다.
pyenv uninstall 3.11.9
pyenv-win
GitHub 사이트 기준으로 pip를 사용하여 라이브러리를 설치 혹은 삭제하거나 버전 폴더의 파일을 수정한 후에는 pyenv rehash
를 실행하도록 명시되어 있습니다. venv를 같이 사용해서 그런지 아직 필요성은 못 느끼고 있습니다.
pyenv rehash
기타 자세한 사항은 다음 링크에서 확인하시기 바랍니다.
GitHub – pyenv-win/pyenv-win#usage
venv
가상환경 생성
가상환경 생성 시 가상환경_이름
은 자신이 원하는 것으로 설정하면 됩니다. 하나의 프로젝트 폴더에 하나의 가상환경을 메인으로 사용한다고 했을 때 .venv
와 같이 통일된 값을 사용하는 것도 나쁘지 않습니다.
# python -m venv [가상환경_이름] python -m venv .venv
활성화
.venv
라는 가상환경을 생성했을 시 다음과 같은 활성화 할 수 있습니다.
.\.venv\Scripts\activate
비활성화
작업을 완료한 후 다음과 같은 방법으로 비활성화 할 수 있습니다.
deacivate
python 프로젝트 작업 진행
작업 진행
- 파이썬을 설치할 때
pyenv-win
을 통해 설치 global
명령어로 시스템 기본이 되는 파이썬 버전 설정- 프로젝트를 작업하는 경우 폴더를 생성한 후
local
명령어로 해당 폴더의 파이썬 버전을 설정 venv
로 가상환경 생성 및 활성화- 생성된 가상환경에서 필요한 라이브러리를 마음껏 설치 및 삭제
- 문제가 생기는 경우
.venv
폴더만 삭제하고 다시 설정작업을 진행
VS Code에서 디버깅 시
VS Code를 사용해 개발 중이라면 파이썬 디버깅 시 사용할 파이썬 인터프리터를 선택할 수 있습니다. 다음과 같이 [프로젝트_폴더]\.venv\Scripts\python.exe
을 디버깅 시 사용할 파이썬 인터프리터로 설정할 수 있습니다.
Ctrl + Shift + P를 누르고 Select Interpreter를 실행
..venv.\Scripts\python.exe 을 선택합니다.
맥 VS 윈도우
현재 필자는 맥에서는 pyenv
만 사용해 파이썬 버전과 라이브러리를 관리하고 있으며 윈도우에서는 pyenv-win
과 venv
를 연계하여 파이썬 개발을 진행하고 있습니다.
마무리
pyenv-win과 venv를 활용한 버전관리를 통해 파이썬 개발 시 충돌과 시스템 파이썬 버전과의 충돌을 피하는 방법에 대해서 알아봤습니다. 현재까진 맥에서는 pyenv
로 윈도우에서는 pyenv-win
과 venv
를 조합해서 작업을 진행하고 있으나 향후 이 방식이 불편하다고 느껴지면 작업 방식을 통일하는 것도 고려하고 있습니다. 이 방법이 최선이라고는 할 수 없지만 파이썬 버전 및 라이브러리의 충돌을 피할 수 있는 괜찮은 방법 중에 하나라고 생각하고 있습니다. 이 글을 읽으시는 분들도 참고해서 자신만의 방식을 찾으시길 바라며 저도 더 낫다고 생각되는 방법을 발견하게 되면 공유드리도록 하겠습니다.