AI&GameDev

AI와 게임개발에 관련된 이야기

윈도우에서 pyenv-win과 venv를 사용한 파이썬 개발환경 최적화 및 버전 관리

python virtual environment

윈도우에서 파이썬 개발 시 버전이나 라이브러리 충돌이 발생하는 문제를 자주 겪을 수 있습니다. 필자는 맥에서 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
pyenv-win

먼저 Windows PowerShell을 관리자 권한으로 실행합니다.

window powershell

다음 명령어로 정책을 변경한 후 설치를 재시도 하세요.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

아래 스크린샷과 동일한 결과가 나오면 설치에 성공한 것입니다.

pyenv-win

사용방법

설치에 성공했으면 이제부터 사용해 보도록 하겠습니다.
먼저 설치 가능한 파이썬 버전을 확인합니다.

pyenv install -l

설치 가능한 파이썬 버전들을 확인할 수 있습니다.

python

만약 원하는 파이썬 버전이 리스트에 없다면, update 명령을 통해 리스트를 갱신하세요.
‼️ 참고로 맥에서는 설치가 가능하나 pyenv-win에서는 지원되지 않는 일부 버전들이 있었습니다.

pyenv update
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폴더만 삭제하고 다시 설정작업을 진행
pyenv pyenv-win venv

VS Code에서 디버깅 시

VS Code를 사용해 개발 중이라면 파이썬 디버깅 시 사용할 파이썬 인터프리터를 선택할 수 있습니다. 다음과 같이 [프로젝트_폴더]\.venv\Scripts\python.exe 을 디버깅 시 사용할 파이썬 인터프리터로 설정할 수 있습니다.

Ctrl + Shift + P를 누르고 Select Interpreter를 실행

VS Code

..venv.\Scripts\python.exe 을 선택합니다.

VS Code

맥 VS 윈도우

현재 필자는 맥에서는 pyenv만 사용해 파이썬 버전과 라이브러리를 관리하고 있으며 윈도우에서는 pyenv-win과 venv를 연계하여 파이썬 개발을 진행하고 있습니다.

pyenv-win venv pyenv

마무리

pyenv-win과 venv를 활용한 버전관리를 통해 파이썬 개발 시 충돌과 시스템 파이썬 버전과의 충돌을 피하는 방법에 대해서 알아봤습니다. 현재까진 맥에서는 pyenv로 윈도우에서는 pyenv-win과 venv를 조합해서 작업을 진행하고 있으나 향후 이 방식이 불편하다고 느껴지면 작업 방식을 통일하는 것도 고려하고 있습니다. 이 방법이 최선이라고는 할 수 없지만 파이썬 버전 및 라이브러리의 충돌을 피할 수 있는 괜찮은 방법 중에 하나라고 생각하고 있습니다. 이 글을 읽으시는 분들도 참고해서 자신만의 방식을 찾으시길 바라며 저도 더 낫다고 생각되는 방법을 발견하게 되면 공유드리도록 하겠습니다.

윈도우에서 pyenv-win과 venv를 사용한 파이썬 개발환경 최적화 및 버전 관리

답글 남기기

Scroll to top