[μ„€μΉ˜] pyenv μ–΄μ„œ 였고

Posted by Euisuk's Dev Log on April 26, 2024

[μ„€μΉ˜] pyenv μ–΄μ„œ 였고

원본 κ²Œμ‹œκΈ€: https://velog.io/@euisuk-chung/Goodbye-Conda-Hello-PyENV

Anaconda(Conda)λŠ” λ¨Έμ‹ λŸ¬λ‹, 데이터과학 λΆ„μ•Όμ˜ λ‹€μ–‘ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ μ„€μΉ˜λœ λŸ°νƒ€μž„μΈ μ•„λ‚˜μ½˜λ‹€ νŒŒμ΄μ¬μ—μ„œ 기본적으둜 μ œκ³΅λ˜λŠ” κ°€μƒν™˜κ²½ λͺ¨λ“ˆμž…λ‹ˆλ‹€. μ•„λ‚˜μ½˜λ‹€λŠ” λΌμ΄μ„ΌμŠ€ λ¬Έμ œκ°€ μžˆλŠ” 데 νŒ€/νšŒμ‚¬ λ“±μ—μ„œ μ‚¬μš© μ‹œ λΌμ΄μ„ΌμŠ€λ₯Ό ꡬ맀해야 ν•œλ‹€λŠ” 쑰항이 μžˆμŠ΅λ‹ˆλ‹€.

πŸ’‘ Anaconda is a commercial distribution of Python with the most popular python libraries, you are not permitted to use Anaconda in an organisation with more than 200 employees. - Anaconda

더 이상 λΌμ΄μ„ΌμŠ€ 문제둜 μ½˜λ‹€λ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” μƒν™©μ—μ„œ λŒ€μ²΄ν• λ§Œν•œ 가상 ν™˜κ²½ λͺ¨λ“ˆμ„ μ—΄μ‹¬νžˆ μ°Ύμ•„λ³΄λ˜ 쀑 virtualenv, venv, pyenv, pipenv이 μžˆλŠ” 것을 ν™•μΈν–ˆκ³ , 이에 λŒ€ν•΄ κ°„λ‹¨ν•œ 쑰사λ₯Ό μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. μ•„λž˜λŠ” λ³Έ λΈ”λ‘œκ·Έ ν¬μŠ€νŠΈμ™€ κ΄€λ ¨μžˆλŠ” μš©μ–΄λ“€μ„ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€.

  • pip: pipλŠ” Python νŒ¨ν‚€μ§€ μΈμŠ€ν†¨λŸ¬λ‘œ, Python νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” ν‘œμ€€ λ„κ΅¬μž…λ‹ˆλ‹€.

    PyPI(Python Package Index)μ—μ„œ νŒ¨ν‚€μ§€λ₯Ό μ°Ύμ•„ μ„€μΉ˜ν•  수 있으며, μš”κ΅¬μ‚¬ν•­ 파일(requirements.txt)을 톡해 μ—¬λŸ¬ νŒ¨ν‚€μ§€λ₯Ό 일괄 μ„€μΉ˜ν•˜λŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€.

  • venv: venvλŠ” Python 3.3 버전 μ΄μƒμ—μ„œ 기본적으둜 μ œκ³΅λ˜λŠ” 가상 ν™˜κ²½ 생성 λ„κ΅¬μž…λ‹ˆλ‹€.

    이 도ꡬλ₯Ό μ‚¬μš©ν•˜λ©΄ 각 ν”„λ‘œμ νŠΈμ— λ…λ¦½λœ Python ν™˜κ²½μ„ 생성할 수 μžˆμ–΄, μ„œλ‘œ λ‹€λ₯Έ ν”„λ‘œμ νŠΈμ—μ„œ μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€ 버전을 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • virtualenv : virtualenvλŠ” venv보닀 더 μ˜€λž˜μ „λΆ€ν„° μ‚¬μš©λ˜μ–΄ 온 가상 ν™˜κ²½ λ„κ΅¬λ‘œ, venvκ°€ λ‚˜μ˜€κΈ° 전에 널리 μ‚¬μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€. venv와 λ§ˆμ°¬κ°€μ§€λ‘œ λ…λ¦½λœ Python ν™˜κ²½μ„ μ œκ³΅ν•˜μ§€λ§Œ, 이전 λ²„μ „μ˜ Pythonμ—μ„œλ„ μ‚¬μš©ν•  수 있으며 좔가적인 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. (λ³„λ„μ˜ μ„€μΉ˜ ν•„μš”)
  • pyenv : pyenvλŠ” λ‹€μ–‘ν•œ λ²„μ „μ˜ Python을 μ„€μΉ˜ν•˜κ³  관리할 수 있게 ν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

    pyenvλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‹œμŠ€ν…œμ˜ κΈ°λ³Έ Python 버전을 λ³€κ²½ν•˜μ§€ μ•Šκ³ λ„, ν”„λ‘œμ νŠΈλ³„λ‘œ λ‹€λ₯Έ Python 버전을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.(λ³„λ„μ˜ μ„€μΉ˜ ν•„μš”)

  • pipenv : pipenvλŠ” νŒ¨ν‚€μ§€ 관리와 가상 ν™˜κ²½ 관리λ₯Ό ν•˜λ‚˜μ˜ λ„κ΅¬λ‘œ ν†΅ν•©ν•œ κ²ƒμž…λ‹ˆλ‹€.

    Pipfileκ³Ό Pipfile.lock을 μ‚¬μš©ν•˜μ—¬ νŒ¨ν‚€μ§€μ˜ μ˜μ‘΄μ„±μ„ κ΄€λ¦¬ν•˜λ©°, 가상 ν™˜κ²½μ„ μžλ™μœΌλ‘œ μƒμ„±ν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€.(λ³„λ„μ˜ μ„€μΉ˜ ν•„μš”)

이번 κΈ€μ—μ„œλŠ” 파이썬 버전 μ»¨νŠΈλ‘€μ„ 톡해 버전 λ³„λ‘œ κ°€μƒν™˜κ²½μ„ λ§Œλ“€ 수 μžˆλŠ” pyenv에 λŒ€ν•œ 글을 μž‘μ„±ν•΄λ³΄λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. λ‹€μŒ νŽΈμ—λŠ” 파이썬 버전 관리λ₯Ό μœ„ν•œ PyENV와 ν•¨κ»˜ νŒ¨ν‚€μ§€ 관리λ₯Ό 효율적으둜 ν•˜κ²Œ ν•΄μ£ΌλŠ” pipenv에 λŒ€ν•΄μ„œ μ†Œκ°œν•˜κ³  이λ₯Ό ν™œμš©ν•΄μ„œ 개발/뢄석 ν™˜κ²½μ„ 섀정해보도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

PyENV

μ•žμ—μ„œλ„ κ°€λ³κ²Œ μ†Œκ°œν•˜κΈ΄ ν–ˆμ§€λ§Œ, PyENVλŠ” λ‹€μ–‘ν•œ λ²„μ „μ˜ νŒŒμ΄μ¬μ„ κ΄€λ¦¬ν•˜κ³  μ‚¬μš©ν•  수 있게 ν•΄μ£ΌλŠ” 인기 μžˆλŠ” λ„κ΅¬μž…λ‹ˆλ‹€. 특히 ν•œ μ‹œμŠ€ν…œμ—μ„œ μ—¬λŸ¬ 파이썬 버전을 κ°„νŽΈν•˜κ²Œ μ„€μΉ˜ν•˜κ³  μ „ν™˜ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. μ΄λŠ” 파이썬 κ°œλ°œμžλ‚˜ μ‹œμŠ€ν…œ κ΄€λ¦¬μžκ°€ μ—¬λŸ¬ ν”„λ‘œμ νŠΈμ—μ„œ λ‹€μ–‘ν•œ 파이썬 λ²„μ „μ˜ ν˜Έν™˜μ„±μ„ μœ μ§€ν•˜λ©΄μ„œ μž‘μ—…ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€.

PyENVλ₯Ό μ‚¬μš©ν•˜λŠ” 이유

  1. 닀쀑 파이썬 버전 관리: ν”„λ‘œμ νŠΈλ§ˆλ‹€ μš”κ΅¬ν•˜λŠ” 파이썬 버전이 λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. PyENVλ₯Ό μ‚¬μš©ν•˜λ©΄ μ‹œμŠ€ν…œμ˜ κΈ°λ³Έ 파이썬 ν™˜κ²½μ„ λ³€κ²½ν•˜μ§€ μ•Šκ³ λ„ μ—¬λŸ¬ λ²„μ „μ˜ νŒŒμ΄μ¬μ„ μ„€μΉ˜ν•˜κ³  관리할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. ν™˜κ²½ 뢄리: PyENVλŠ” 각 ν”„λ‘œμ νŠΈλ³„λ‘œ 독립적인 파이썬 ν™˜κ²½μ„ μ„€μ •ν•  수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€. 이λ₯Ό 톡해 μ„œλ‘œ λ‹€λ₯Έ μ˜μ‘΄μ„±μ„ κ°€μ§„ ν”„λ‘œμ νŠΈκ°€ μ„œλ‘œ 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šκ³  λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. κ°„νŽΈν•œ 버전 μ „ν™˜: PyENVλ₯Ό μ‚¬μš©ν•˜λ©΄ μ»€λ§¨λ“œ 라인 λͺ…λ Ήμ–΄λ₯Ό 톡해 μ‰½κ²Œ 파이썬 버전을 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” 개발 쀑에 νŠΉμ • 파이썬 λ²„μ „μœΌλ‘œμ˜ ν…ŒμŠ€νŠΈλ₯Ό λΉ λ₯΄κ²Œ μˆ˜ν–‰ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.
  4. ν˜Έν™˜μ„± ν…ŒμŠ€νŠΈ: λ‹€μ–‘ν•œ 파이썬 λ²„μ „μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•˜κ³  싢을 λ•Œ PyENVλŠ” 이λ₯Ό κ°„νŽΈν•˜κ²Œ λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. μ΄λŠ” μ†Œν”„νŠΈμ›¨μ–΄κ°€ λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œλ„ μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ 보μž₯ν•˜λŠ” 데 μ€‘μš”ν•©λ‹ˆλ‹€.
  5. μ‹œμŠ€ν…œ 파이썬과의 독립성: PyENVλŠ” μ‹œμŠ€ν…œμ— 사전에 μ„€μΉ˜λœ νŒŒμ΄μ¬μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  μž‘λ™ν•©λ‹ˆλ‹€. μ΄λŠ” μ‹œμŠ€ν…œ νŒŒμ΄μ¬μ„ λ³€κ²½ν•˜κ±°λ‚˜ μ—…κ·Έλ ˆμ΄λ“œν•˜μ§€ μ•Šκ³ λ„ μƒˆλ‘œμš΄ λ²„μ „μ˜ νŒŒμ΄μ¬μ„ μ‹œν—˜ν•΄ λ³Ό 수 있게 ν•΄μ€λ‹ˆλ‹€.

PyENV의 μž‘λ™ 방식

PyENVλŠ” μ‚¬μš©μžμ˜ ν™ˆ 디렉토리에 .pyenvλΌλŠ” 디렉토리λ₯Ό μƒμ„±ν•˜κ³ , 여기에 μ—¬λŸ¬ λ²„μ „μ˜ νŒŒμ΄μ¬μ„ μ„€μΉ˜ν•©λ‹ˆλ‹€. 이후 ν™˜κ²½ 섀정을 톡해 PATH ν™˜κ²½ λ³€μˆ˜μ— 이 디렉토리λ₯Ό μΆ”κ°€ν•˜μ—¬, ν„°λ―Έλ„μ—μ„œ νŒŒμ΄μ¬μ„ μ‹€ν–‰ν•  λ•Œ PyENVκ°€ κ΄€λ¦¬ν•˜λŠ” 버전을 μš°μ„ μ μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ ν•©λ‹ˆλ‹€. λ˜ν•œ, pyenv init λͺ…령을 μ‚¬μš©ν•˜μ—¬ μ‰˜μ„ κ΅¬μ„±ν•˜κ³ , 파이썬 버전을 μ‰½κ²Œ μ „ν™˜ν•  수 μžˆλŠ” ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

PyENVλŠ” 파이썬 버전 κ΄€λ¦¬λΏλ§Œ μ•„λ‹ˆλΌ pyenv-virtualenv ν”ŒλŸ¬κ·ΈμΈμ„ 톡해 각 버전에 λŒ€ν•œ 가상 ν™˜κ²½λ„ 관리할 수 μžˆμ–΄, 개발자의 μž‘μ—…μ„ λ”μš± 효율적으둜 λ§Œλ“€μ–΄ μ€λ‹ˆλ‹€. μ΄λŸ¬ν•œ κΈ°λŠ₯ 덕뢄에 PyENVλŠ” 파이썬 κ°œλ°œμžλ“€ μ‚¬μ΄μ—μ„œ ν•„μˆ˜μ μΈ λ„κ΅¬λ‘œ 자리작고 μžˆμŠ΅λ‹ˆλ‹€.

PyENV μ„€μΉ˜ 및 μ„€μ • 방법

PyENVλ₯Ό μ„€μΉ˜ν•˜κ³  μ„€μ •ν•˜λŠ” 과정은 μ—¬λŸ¬ λ‹¨κ³„λ‘œ λ‚˜λˆ„μ–΄μ§‘λ‹ˆλ‹€. 이 과정을 톡해 μ—¬λŸ¬ 파이썬 버전을 μ‰½κ²Œ κ΄€λ¦¬ν•˜κ³  ν•„μš”μ— 따라 버전을 μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λž˜μ—μ„œλŠ” μš°λΆ„νˆ¬ μ‹œμŠ€ν…œμ„ κΈ°μ€€μœΌλ‘œ PyENVλ₯Ό μ„€μΉ˜ν•˜κ³  ν™˜κ²½μ„ μ„€μ •ν•˜λŠ” 단계별 방법을 μ„€λͺ…ν•©λ‹ˆλ‹€.

✍️ μ•„λž˜λŠ” LINUX μ‹œμŠ€ν…œμ„ κΈ°μ €λ‘œ μ„€λͺ…ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. PyENVλ₯Ό Windows에 μ„€μΉ˜ν•˜λŠ” 방법은 λ³Έ κΈ€ κ°€μž₯ λ§ˆμ§€λ§‰ μž₯μ—μ„œ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

1단계: μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ μ—…λ°μ΄νŠΈ

μ„€μΉ˜ 전에 μ‹œμŠ€ν…œ νŒ¨ν‚€μ§€ λͺ©λ‘μ„ μ΅œμ‹  μƒνƒœλ‘œ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.

1
sudo apt-get update -y && sudo apt-get upgrade -y

2단계: ν•„μˆ˜ 도ꡬ μ„€μΉ˜

PyENV μ„€μΉ˜μ— ν•„μš”ν•œ κΈ°λ³Έ 도ꡬ듀을 μ„€μΉ˜ν•©λ‹ˆλ‹€.

1
2
3
4
5
# ν•„μš”ν•œ μ˜μ‘΄μ„± μ„€μΉ˜ (Ubuntu/Debian κΈ°μ€€)
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl git llvm python3-openssl \
libncurses5-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \
libffi-dev liblzma-dev

3단계: PyENV μ„€μΉ˜

curl을 μ‚¬μš©ν•˜μ—¬ PyENV μ„€μΉ˜ 슀크립트λ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€. 이 μŠ€ν¬λ¦½νŠΈλŠ” PyENV와 ν•¨κ»˜ ν•„μš”ν•œ λͺ¨λ“  ν”ŒλŸ¬κ·ΈμΈμ„ μ„€μΉ˜ν•©λ‹ˆλ‹€.

1
curl https://pyenv.run | bash

4단계: ν™˜κ²½ μ„€μ • μΆ”κ°€

μ‚¬μš©μžμ˜ ν™ˆ 디렉토리에 μœ„μΉ˜ν•œ ~/.bashrc νŒŒμΌμ— λ‹€μŒκ³Ό 같이 ν™˜κ²½ 섀정을 μΆ”κ°€ν•©λ‹ˆλ‹€. 이 섀정은 PyENVκ°€ μ‹œμŠ€ν…œμ— ν†΅ν•©λ˜μ–΄ μž‘λ™ν•˜λ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

1
2
3
echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
  1. echo 'export PATH="${HOME}/.pyenv/bin:$PATH"' >> ~/.bashrc : 이 λͺ…령은 pyenv μ‹€ν–‰ 파일이 μœ„μΉ˜ν•œ 디렉토리λ₯Ό μ‹œμŠ€ν…œμ˜ PATH ν™˜κ²½ λ³€μˆ˜μ— μΆ”κ°€ν•©λ‹ˆλ‹€. PATHλŠ” μ‰˜μ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ λͺ…령어듀을 찾을 λ•Œ μ°Έμ‘°ν•˜λŠ” λ””λ ‰ν† λ¦¬μ˜ λͺ©λ‘μ„ ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ${HOME}/.pyenv/bin을 PATH에 μΆ”κ°€ν•¨μœΌλ‘œμ¨, μ‚¬μš©μžλŠ” 터미널 μ–΄λ””μ—μ„œλ‚˜ pyenv λͺ…령을 μ‹€ν–‰ν•  수 있게 λ©λ‹ˆλ‹€.
  2. echo 'eval "$(pyenv init -)"' >> ~/.bashrc : pyenv initλŠ” pyenvκ°€ μ œλŒ€λ‘œ κΈ°λŠ₯ν•˜λ„λ‘ μ΄ˆκΈ°ν™”ν•˜λŠ” λͺ…λ Ήμž…λ‹ˆλ‹€. 이 λͺ…령은 pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ Python 버전을 관리할 λ•Œ ν•„μš”ν•œ ν™˜κ²½ 섀정을 λ‘œλ“œν•˜κ³ , μ‰˜μ˜ λ™μž‘μ„ μˆ˜μ •ν•©λ‹ˆλ‹€. eval λͺ…령은 μ—¬κΈ°μ„œ 좜λ ₯된 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ©°, μ΄λŠ” pyenvλ₯Ό μ‚¬μš©ν•  λ•Œ ν•„μš”ν•œ ν™˜κ²½ λ³€μˆ˜λ‚˜ ν•¨μˆ˜ 등을 μ‰˜μ— μ„€μ •ν•©λ‹ˆλ‹€.
  3. echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc : 이 λͺ…령은 pyenv와 ν•¨κ»˜ μ‚¬μš©λ˜λŠ” pyenv-virtualenv ν”ŒλŸ¬κ·ΈμΈμ„ μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. pyenv virtualenv-init은 가상 ν™˜κ²½μ„ κ΄€λ¦¬ν•˜λŠ”λ° ν•„μš”ν•œ μ‰˜ λͺ…령어듀을 μ œκ³΅ν•©λ‹ˆλ‹€. 이 슀크립트λ₯Ό μ‹€ν–‰ν•¨μœΌλ‘œμ¨ μ‚¬μš©μžλŠ” pyenvλ₯Ό μ‚¬μš©ν•˜μ—¬ 각 Python λ²„μ „λ³„λ‘œ 독립적인 가상 ν™˜κ²½μ„ μ‰½κ²Œ μƒμ„±ν•˜κ³  관리할 수 있게 λ©λ‹ˆλ‹€.

5단계: μ‰˜ μ„€μ • 적용

λ³€κ²½λœ ν™˜κ²½ 섀정을 μ μš©ν•˜κΈ° μœ„ν•΄ μ‰˜μ„ μž¬μ‹œμž‘ν•˜κ±°λ‚˜ λ‹€μŒ λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

1
2
3
exec "$SHELL"
# or run following code
# source ~/.bashrc

6단계: PyENV μž‘λ™ 확인

PyENVκ°€ μ œλŒ€λ‘œ μ„€μΉ˜λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ‹€μŒ λͺ…λ Ήμ–΄λ‘œ PyENV 버전을 ν™•μΈν•©λ‹ˆλ‹€.

1
pyenv --version

PyENVλ₯Ό μ‚¬μš©ν•˜μ—¬ 파이썬 버전 μ„€μΉ˜

1단계: μ„€μΉ˜ κ°€λŠ₯ν•œ 파이썬 버전 λͺ©λ‘ 확인

μ‚¬μš© κ°€λŠ₯ν•œ 파이썬 버전 λͺ©λ‘μ„ ν™•μΈν•©λ‹ˆλ‹€.

1
pyenv install --list # check available envs

2단계: 파이썬 버전 μ„€μΉ˜

μ›ν•˜λŠ” 파이썬 버전을 μ„€μΉ˜ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 파이썬 3.8.10을 μ„€μΉ˜ν•˜κ³  μ‹Άλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μ‹€ν–‰ν•©λ‹ˆλ‹€.

1
pyenv install 3.8.10 # download env

(μ°Έκ³ ) νŠΉμ • 파이썬 버전 μ‚­μ œ

1
pyenv uninstall 3.8.10

πŸ’‘ μ–΄? μ•ˆ μ§€μ›Œμ Έμš”??Β Β» μ–΄λ”˜κ°€μ— python이 μ—΄λ €μžˆκ±°λ‚˜, global둜 μ§€μ •λ˜μ–΄ μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€.

3단계: μ„€μΉ˜λœ 파이썬 버전을 κΈ°λ³Έ λ²„μ „μœΌλ‘œ μ„€μ •

기본적으둜 default νŒŒμ΄μ¬μ€ μ‹œμŠ€ν…œ 상에 μ„€μΉ˜λ˜μ–΄ μžˆλŠ” νŒŒμ΄μ¬μ„ κΈ°λ³Έ 파이썬으둜 μž‘μ•„μ£Όκ²Œ λ©λ‹ˆλ‹€. 이번 λ‹¨κ³„μ—μ„œλŠ” μ„€μΉ˜λœ 파이썬 버전을 μ „μ—­μ μœΌλ‘œ κΈ°λ³Έ λ²„μ „μœΌλ‘œ μ„€μ •ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

1
pyenv global 3.8.10 # set global env

4단계: λ‚΄ PyENV ν™˜κ²½μ— μ„€μΉ˜λœ 파이썬 버전 리슀트 ν™•μΈν•˜κΈ°

1
pyenv versions # check installed envs

이제 PyENVλ₯Ό 톡해 μ—¬λŸ¬ 파이썬 버전을 효율적으둜 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•„μš”μ— 따라 νŠΉμ • ν”„λ‘œμ νŠΈμ— λŒ€ν•΄ λ‹€λ₯Έ 버전을 μ§€μ •ν•˜κ±°λ‚˜ 가상 ν™˜κ²½μ„ μƒμ„±ν•˜μ—¬ ν”„λ‘œμ νŠΈ κ°„μ˜ 독립성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

(μ°Έκ³ ) Windowsμ—μ„œ PyENV μ„€μΉ˜ν•˜κΈ°

Windows에 PyENVλ₯Ό μ„€μΉ˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” powershell을 κ΄€λ¦¬μž λͺ¨λ“œλ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€. κ°„λ‹¨νžˆ μ•„λž˜ λͺ…λ Ήμ–΄λ₯Ό powershell에 μž…λ ₯ν•˜μ—¬ κΆŒν•œμ„ μ‘°μ •ν•©λ‹ˆλ‹€.

1
2
# κΆŒν•œμ‘°μ •
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

κΆŒν•œμ„ μ‘°μ •

1
2
# pyenv-win μ„€μΉ˜
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

1
2
3
4
5
6
7
8
9
# κ²½λ‘œν™•μΈ
$env:Path
 
# pyenv 싀행확인
pyenv 
 
# pyenvμ—μ„œ μ„€μΉ˜κ°€λŠ₯ν•œ python λ²„μ „λ¦¬μŠ€νŠΈ update
pyenv update
pyenv install --list

λ‹€μŒμ—λŠ” PyENV + pipENVλ₯Ό ν™œμš©ν•œ ν™˜κ²½ ꡬ좕을 해보도둝 ν•΄μš”~~!!

κΈ΄ κΈ€ μ½μ–΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ ^^



-->