python:: install pyenv windows(pyenv-win) /ubuntu 및 사용방법

 

파이썬을 처음 배우는 사람이 있다면, 파이썬python 명령어를 배웠으면 그 다음에는 pyenv를 배우세요 라고 할 것입니다. 파이썬을 계속 할 것이라면 언젠가는 배워야지 환경설정에 대한 오류가 적기 때문입니다.  

더보기

대부분의 책에서 설명하는 "파이썬 홈페이지python.org"에서 설치파일 패키지를 다운받아 설치했습니다. 그리고 라이브러리 설치를 위해서  -pip-명령어를 입력했습니다.

 

이 과정이 순탄치만은 않았던 것으로 기억됩니다. 처음인지라 개념이 없기에 그저 따라하기만 될 줄 알았습니다만 윈도우에서는 다른 환경보다 조금 더 까탈스럽습니다. OS별으로 달라지는 설정에 따른 오류나 파이썬 버전별로 python 3.7 / python 3.8 달라지는 라이브러리 호환 문제, 그리고 이에 따르는 pip패키지 설치폴더 경로에 따라서 발생하는 문제도 있습니다.

  이 모든 것을 고려해서 조치하는 것은 쉽지가 않고 에러를 해결하려고 찾아보던 많은 인터넷 자료들은 MacOS나 리눅스 기준으로 적힌 것도 많습니다.그래서 windows에서는 동작하지 않는 virtualenv, pipenv 명령어는 사용할 수 없습니다. 지나고 나니 많이 찾아본다고 해결 되는 것이 아니였습니다.

 

통제된 환경(통합환경)을 만들어주는 아나콘다Anaconda, 미니콘다Miniconda 가 가장 적합한 환경으로 설명합니다. 아마도 파이썬 강좌영상이나 일부 책에서는 첫 단추인 파이썬 설치시 겪는 문제를 회피하고자 했겠지요. 기본적으로 동의합니다. 실행은 되어야 하니깐요.

 

하지만 어느 정도 파이썬을 사용하다보면 그 목적에 따라서  윈도우, 맥Mac, WSL 등 다양한 환경OS에서 실행할 필요가 생깁니다. jupyter notebook이나 embed app상에서 사용해야 할 때가 있습니다. 이렇게 사용자의 PC환경에 차이가 있다보니 아나콘다가 지원하지 않는 환경에서는 결국 '파이썬' 자체의 환경을 다룰 줄 알아야 합니다.

 

예로, 제가 사용하는 주식 관련프로그램은 연동문제로 32bit가 기본입니다. 특이한 라이브러리를 설치하고 지우다 보면 '가상환경'도 만들어야 했고, 최신버전에서는 지원하지 않는 것도 있어서 최신버전보다 한단계 이전버전을 사용해야 할 때도 있습니다. 여러 번 파이썬(또는 라이브러리) 설치, 삭제를 반복하다보니 오히려 아나콘다에서 더 문제를 일으켜 동작을 안하기도 했습니다.

  

처음부터 pyenv 사용법을 배웠더라면 훨씬 삽질하는 시간을 줄였을 텐데 싶습니다.

pyenv에 관련된 인터넷 정보는 리눅스나 Mac 기준으로 설명된 글이 많다보니

windows버전은 설치방법이나 사용법을 다루는 글이 많지 않습니다.

(제가 찾아봤던 글에는 windows버전이 없다고 했었다. )  지금 2022년에는 윈도우windows 버전도 있어서 글을 씁니다.

 

'다소 불필요해 보이기도 하고, 당장 python을 실행하는데 문제가 없는데...' 라고 생각하실 수 있지만

꾸준히 파이썬을 사용해야 할 사용자라면 꼭 익혀두시는 것을 추천합니다.

 

 

 

 

 

 

 

((파이썬의 가상환경 사용방법/비교 ))

; 현재 사용하는 파이썬 버전내에서 생성하는 '가상환경'의 개념과 사용법은 아래 글에 잘 설명되어 있습니다.

여러 개 글을 검색하면서 찾아본 것 중에 간결하면서도 정리를 잘 해두어 스크랩 해둔 것입니다.

한번 읽어보고 시작합시다.

https://devbull.xyz/python-create-environment/

 

파이썬 가상환경 비교(pipenv, venv, conda)

🖐 귀찮은데 그냥 깔면 안돼요? 파이썬은 같은 인터프리터 버전이라면 같은 패키지를 공유한다. 예를 들어 프로젝트 A와 B에서 Python 3.9.4를 사용하고 있다면, A에서 설치한 패키지를 B에서도 사

devbull.xyz

 

 

 

그럼 이 글에서 설명하는 것은 무엇일까요?

- 파이썬의 버전이 달라질 경우 python 3.8 / python3.9 / python 3.11 >> pyenv 파이썬 버전관리

- 1개의 python 버전에서 pip로 설치하는 라이브러리가 달라질 경우 >> pipenv, venv, conda 가상환경 관리

 

여기서는 파이썬 버전관리 툴인, pyenv 설치 및 사용법을 설명합니다.

 

 

 

 

1) Windows pyenv 설치방법

 

Windows - pyenv의 자세한 설명은 아래  공식문서를 참고하세요

https://github.com/pyenv-win/pyenv-win#installation 

 

간단히 요약하자면 총 3가지 방법이 있어서 이를 소개합니다.

(1)Chocolatey 플랫폼 설치, (2) PowerShell , (3)기존 python 설치한 사용자,

각 환경별로 아래 (1) / (2) 방법과 깃허브 설명에 따라 설치합니다.

 

 

 


1-1) Windows 방법 - Chocolatey 플랫폼

 

https://docs.chocolatey.org/en-us/choco/setup#install-with-cmd.exe  (영문공식설명)

https://www.lainyzine.com/ko/article/how-to-install-package-manager-chocolatey-on-windows-10/ (그림과 설명좋음)

 

 

1-1-가) pyenv -win 설치 전, choco 초코플랫폼 설치

   

(사전 권한설정)을 하고 시작한다

cmd_명령프롬프트에서 설치시, 아래 문구입력

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "[System.Net.ServicePointManager]::SecurityProtocol = 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

_

 

 

powershell에서 설치시, 아래 문구 입력

#권한설정1 - 관리자 권한으로 powershell 실행필요
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

#권한설정2 + choco설치명령어
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

**아래 powershell의 빨간 오류문자를, -ExecutionPolicy Byass 로 우회하여(CMD/powershell 모두) 설치하는 조건임

executionPolicy 설정변경을 하여 실행권한을 부여함

 

 

 

1-1-나) "pyenv-win"을 설치

초코플랫폼 설치가 끝났으면 아래 명령어로 pyenv를 설치합니다.

powershell을 "관리자권한"으로 실행합니다.

choco install pyenv-win

powershell(관리자권한)에서 -pyenv-를 설치하자

 

 

 

 

 

1-2) Window 방법 - PowerShell 사용 

 

*powershell을 관리자모드로 선택합니다. 인터넷 설명글과 MS관련 글을 참고해서도 조치가 안되는 경우가 많습니다. 간단히 아래 명령어를  powershell에 입력하여 권한을 조정합니다.

(홈페이지에서는 권한설정을 예외사항으로 다루지만, 설치할 때마다 권한문제가 발생하여 사전 조건으로 입력하는 것이 좋습니다)

 

# 권한조정
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

# pyenv-win install
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"

_

 

 

 

<< pyenv-win설치시 ERROR 메세지 (권한문제) >>

만약, 아래 오류메세지가 표시된다면 권한 조정이 정상적으로 이루어지지 않은 것입니다. 

이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\User\Documents\WindowsPowerShell\profile.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Windows - pyenv path 경로설정

 

윈도우에서 pyenv가 실행될 때 원활한 동작을 위해 "사용자 환경변수"설정이 필요하다.

powershell에서 아래 명령어를 입력하거나 환경설정창에서 path를 추가한다

# 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


# pyenv 실행확인
pyenv 

# pyenv에서 설치가능한 python 버전리스트 update
pyenv update
pyenv install --list

 

Add PYENV, PYENV_HOME and PYENV_ROOT to your Environment Variables

step 1. Using either PowerShell or Windows 8/above Terminal run

step 2. Now add the following paths to your USER PATH variable in order to access the pyenv command.
Run the following in 
PowerShell or Windows 8/above Terminal:

 

If you installed using Chocolatey, you can skip to step 3.

step 3. Close and reopen your terminal app and run pyenv --version

  •   If the return value is the installed version of pyenv, then continue to Step 4
  •   If you receive a "command not found" error, ensure all environment variables are properly set via the GUI: This PC → Properties → Advanced system settings → Advanced → Environment Variables... → PATH
  • If you receive a "command not found" error and you are using Visual Studio Code or another IDE with a built in terminal, restart it and try again

4. Now run the pyenv rehash from home directory

 

 

 

 

Windows - PIP path 경로설정

2023-08-19 update

"pyenv rehash" 명령어를 사용하여 pip 등 경로를 재설정합니다. 

python version이 바뀌거나 pip 명령어를 인식하지 못할 때, 이를 사용하여 갱신합니다.

pyenv rehash

 

 

pyenv에서 설치한 python 버전은 자동으로 경로를 인식하지만, 각 버전의 pip를 프로그램별로 다르게 인식한다.

이유는 Window - VSCODE  Terminal에서의 명령어 실행은 윈도우 환경설정을 따르기 때문인데

그래서 아래처럼 pip 실행을 위한 main 버전의 scripts 경로를 따로 추가해 주어야 vscode 등에서 pip명령어가 정상적으로 작동한다.

> python 경로를 지정하더라도 PIP와 관련된 "scripts" 경로를 추가하지 않으면 pip 명령어가 작동하지 않는다

 

* 아래 문구를 추가로 적용합니다.

# pip 등을 실행하기 위한 경로 _버전별로 설정해야 한다
# >> pyenv rehash 명령어로 대체됨


# NO USE / 아래명령어를 이제 별도로 입력할 필요가 없습니다.(2024-03-16)
# for ver3.10.11
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\versions\3.10.11\Scripts\;"  + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")
# for ver3.11.2
[System.Environment]::SetEnvironmentVariable('path', $env:USERPROFILE + "\.pyenv\pyenv-win\versions\3.11.2\Scripts\;"  + [System.Environment]::GetEnvironmentVariable('path', "User"),"User")

** 위 문구는 기록상 남겨두었습니다. pyenv rehash 명령어를 사용하세요

 

 

 

 

 

Windows - venv 가상환경 설정 및 경로설정

 

windows에서는 Linux/Mac버전 pyenv와 다르게, virtualenv 명령어를 지원하지 않습니다.

그래서 python 기본명령어인 "venv"를 사용하여 마치 가상환경처럼 virtualenv을 대체하여 사용합니다.

 

(2024-03-16 update)

* windows에서는 대소문자를 가리지 않지만, 윈도우WSL이나 도커환경내에서 사용하면 이 것은 Linux환경이기 때문에 대소문자를 가릴 수도 있고, 경로에서 폴더를 나타내는 \ , / 를 잘 구분해야 할 때도 있습니다. 경로설정 등에서 유의하세요

 

*찾아보니 폴더_project별(폴더별)로 자동실행 activate되는 메뉴는 없는 듯합니다.

vscode에서는 자동인식하여 확인버튼을 누르도록 안내문구가 팝업되기는 합니다.

# 가상환경 생성
python -m venv [virtual_name]
python -m venv venv

# 가상환경 적용/해제
.\[virtual_name folder]\Sciripts\activate
.\[virtual_name folder]\Sciripts\deactivate

.\venv\Scripts\activate
.\venv\Scripts\deactivate

 

 

 

 

 

 

 

 

 

 

 

2) LINUX (ubuntu) pyenv 설치방법

 

가) pyenv - ubuntu 설치

https://github.com/pyenv/pyenv-installer

curl https://pyenv.run | bash


curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

# 설치중, 혹시 아래줄과 같은 에러 발생하면
# "Can not proceed with installation. Kindly remove .pyenv from home/"
# 아래 줄 명령어로 폴더 삭제하고 다시 4번째 줄 실행
# rm -rf ~/.pyenv     


# Restart your shell so the path changes take effect:
exec $SHELL


# For UPDATE
git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
pyenv update

 

 

 

나) 설치후 환경설정

+ 설치한 뒤에는 .bashrc 환경설정파일에, 아래 보이는 명령어 3줄을 추가하라는 안내 문구가 나오면 설치 완료

# 방법1) sudo nano ~/.bashrc 명령어로 아래 3줄을 맨 아래에 추가
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"


# 방법2) terminal에서 바로 echo 명령어로 간편하게 추가
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
 
 
# 적용)
source ~/.bashrc   


# 추가) https://github.com/pyenv/pyenv-virtualenv 도 추가로 설치했고
# 기본설정에 등록하려면 아래문구도 추가
eval "$(pyenv virtualenv-init -)"

 

 

 .profile에도 적용하려면 아래 방법을
echo -e 'if shopt -q login_shell; then' \
      '\n  export PYENV_ROOT="$HOME/.pyenv"' \
      '\n  export PATH="$PYENV_ROOT/bin:$PATH"' \
      '\n eval "$(pyenv init --path)"' \
      '\nfi' >> ~/.bashrc
echo -e 'if [ -z "$BASH_VERSION" ]; then'\
      '\n  export PYENV_ROOT="$HOME/.pyenv"'\
      '\n  export PATH="$PYENV_ROOT/bin:$PATH"'\
      '\n  eval "$(pyenv init --path)"'\
      '\nfi' >>~/.profile
echo 'eval "$(pyenv init -)"' >> ~/.bashrc


# 그리고 SHELL 다시 실행필요
exec "$SHELL"

 

 

 

WSL, ubuntu 에서 경로를 찾지 못할 때

# 위 자동문로구를 입력했을 때, 아래처럼 ERROR에러 문구 발생하면 
# pyenv
# Command 'pyenv' not found, did you mean:
# command 'p7env' from deb libnss3-tools (2:3.68.2-0ubuntu1.2)
# Try: sudo apt install <deb name>

https://thekkom.tistory.com/261

 

wsl:: pyenv in wsl-ubuntu path error (pyenv-win in Windows)

ubuntu에서 pyenv 쓰던 사람들은, 당연히 wsl에서도 동작하겠지 생각하지만아니다!!!  경로에러 난다.나도 3개월을 찾아헤매다가 한 20번은 실패한 듯한데...  윈도우에서 파일을 다루는 코드를 짜

thekkom.tistory.com

 

 

 

 

 

3) pyenv 사용법, 명령어

자주 쓰는 명령어들

# pyenv 버전확인  
pyenv version

# pyenv 업데이트
pip install --upgrade pyenv-win

# pyenv 업데이트 for ubuntu 
git clone https://github.com/pyenv/pyenv-update.git $(pyenv root)/plugins/pyenv-update
pyenv update



# 설치가능한 버전 목록 LIST 확인
pyenv install -l
pyenv install --list

# python 3.10.11 버전으로 설치
pyenv install 3.10.11

# python 2개 버전(3.9.13 + 3.10.11) 동시설치
pyenv install 3.9.13 3.10.11

# 설치한 모든 python version 확인
pyenv versions

# 기본 적용할 python 버전 지정
pyenv global 3.10.11

# 해당폴더에 사용할 python 버전 지정
pyenv local 3.10.11

# 폴더에 적용중인 python 버전으로 pip 폴더를 재설정
pyenv rehash

# 현재 사용중인 python 버전 확인
pyenv shell

# 설치된 특정버전의 python 제거
pyenv uninstall 3.10.11


------ (가상환경VENV)------
# python 사용경로 확인
pyenv which python 
pyenv which <command>

# 가상환경 생성 (ubuntu, mac)
pyenv virtualenv [version] [virtual_name]
pyenv virtualenv 3.10.11 venv3.10.11

# 가상환경 적용
pyenv global [virtual_name]
pyenv local [virtual_name]



----- (Window venv 사용) -----
# Win가상환경 생성 (Windows에서는*아직 지원 안하니 python 기본모듈 venv를 사용함)

# 가상환경 생성
python -m venv [virtual_name]
python -m venv venv
 
# 가상환경 적용/해제
.\[virtual_name folder]\Sciripts\activate
.\[virtual_name folder]\Sciripts\deactivate
 
.\venv\Scripts\activate
.\venv\Scripts\deactivate


----- (Ubuntu venv 사용) -----
# 가상환경 생성
python -m venv [virtual_name]
python -m venv venv

source ./venv/bin/activate

 

 

pyenv commands  for WINDOWS    *ubuntu와 다름

   commands     List all available pyenv commands
   local        Set or show the local application-specific Python version
   global       Set or show the global Python version
   shell        Set or show the shell-specific Python version
   install      Install 1 or more versions of Python 
   uninstall    Uninstall 1 or more versions of Python
   update       Update the cached version DB
   rehash       Rehash pyenv shims (run this after switching Python versions)
   vname        Show the current Python version
   version      Show the current Python version and its origin
   version-name Show the current Python version
   versions     List all Python versions available to pyenv
   exec         Runs an executable by first preparing PATH so that the selected Python
   which        Display the full path to an executable
   whence       List all Python versions that contain the given executable

 

 

 

pyenv-commands  for  ubuntu / MacOS

pyenv --help

Some useful pyenv commands are:
   --version   Display the version of pyenv
   activate    Activate virtual environment
   commands    List all available pyenv commands
   deactivate   Deactivate virtual environment
   exec        Run an executable with the selected Python version
   global      Set or show the global Python version(s)
   help        Display help for a command
   hooks       List hook scripts for a given pyenv command
   init        Configure the shell environment for pyenv
   install     Install a Python version using python-build
   local       Set or show the local application-specific Python version(s)
   prefix      Display prefix for a Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   root        Display the root directory where versions and shims are kept
   shell       Set or show the shell-specific Python version
   shims       List existing pyenv shims
   uninstall   Uninstall a specific Python version
   version     Show the current Python version(s) and its origin
   version-file   Detect the file that sets the current pyenv version
   version-name   Show the current Python version
   version-origin   Explain how the current Python version is set
   versions    List all Python versions available to pyenv
   virtualenv   Create a Python virtualenv using the pyenv-virtualenv plugin
   virtualenv-delete   Uninstall a specific Python virtualenv
   virtualenv-init   Configure the shell environment for pyenv-virtualenv
   virtualenv-prefix   Display real_prefix for a Python virtualenv version
   virtualenvs   List all Python virtualenvs found in `$PYENV_ROOT/versions/*'.
   whence      List all Python versions that contain the given executable
   which       Display the full path to an executable

 

 

 

 

 


(( ETC ))

 

 

- 설치버전 확인 :: 2가지 버전을 설치했을 때

  pyenv versions 

 

 

 

- pip를 사용해 모듈을 설치할 때, 설치 위치확인

 pyenv which pip

 

 

 

 

-VScode에서 interpreter 설정시 보이는 environmental variables / 실행주소

 

 

 

 

 


 

Error 해결

 

 

 

ubuntu:: pyenv install x.x.x  파이썬 설치시 오류메세지

- build-essential 패키지가 없어서 발생하는 오류임

- 아래 링크 글에서 "사전모듈"을 설치하고 다시  pyenv install 3.x를 실행한다

https://thekkom.tistory.com/84

 

ubuntu:: pyenv 설치시 오류메세지 - build module 미설치

docker code-server 이미지에서 pyenv를 설치하려는데 다음과 같은 오류가 발생한다기타 ubuntu / wsl에서도 동일한 메세지 발생시 조치는 동일방  ERRORInspect or clean up the working tree atResults logged to 

thekkom.tistory.com

 

 

 

 

 

 

 

 

윈도우에서 python 명령어를 입력하면 앱스토어로 자꾸 연결되거나,

pyenv 로 폴더별 설정을 변경했음에도 다른 버전이 실행될 때...

https://thekkom.tistory.com/156

 

python:: 앱 실행 별칭 설정 - Microsoft Store(앱스토어) 팝업해제

에러:- python 명령어 CLI입력시 앱설치 화면이 뜨는 경우- pyenv로 폴더별 python versions을 설정했음에도 global version 실행될 때   MS Store 에서 파이썬을 다운받으면,,,,, 안 됨.경로가 꼬여서 연동을 꺼

thekkom.tistory.com

 

 

 

 

 

 

 

 

_

반응형