이전에 설정한 WSL
의 Ubuntu
환경에 파이썬을 설치했습니다.
Ubuntu-22.04 LTS 버전에는 기본적으로 파이썬 3.10 버전이 설치되어있으나
앞으로 파이썬 버전의 다양한 활용을 대비해 pyenv
를 통해 재설치를 진행했습니다.
"pyenv" 란?
파이썬 버전 관리 도구, 여러 버전의 파이썬을 설치 및 전환 가능.
- 프로젝트별, 가상환경별 파이썬 버전 지정 가능
- 시스템 전역의 파이썬 버전과 독립적으로 프로젝트마다 버전 관리 가능
"pip" 란?
파이썬 패키지 관리 도구, 패키지(모듈)을 설치 및 관리 가능
- 사용 중인 파이썬에 패키지 설치, 업그레이드, 제거 등을 관리
- requirements.txt 파일을 통해 프로젝트 의존성을 정의하고 설치
pyenv
설치 과정해당 사이트로 들어가 각 OS에 맞게 설치 명령어 입력.
저의 경우 Ubuntu
를 사용하기에 여기에 맞게 내용 입력하겠습니다.
$ curl https://pyenv.run | bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 270 100 270 0 0 164 0 0:00:01 0:00:01 --:--:-- 164
Cloning into '/home/{}/.pyenv'...
remote: Enumerating objects: 1185, done.
remote: Counting objects: 100% (1185/1185), done.
remote: Compressing objects: 100% (675/675), done.
remote: Total 1185 (delta 692), reused 655 (delta 377), pack-reused 0
Receiving objects: 100% (1185/1185), 589.16 KiB | 3.18 MiB/s, done.
...
WARNING: seems you still have not added 'pyenv' to the load path.
# Load pyenv automatically by appending
# the following to
# ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
# and ~/.bashrc (for interactive shells) :
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
이후 저는 zsh
을 사용하고 있어 여기에 환경 변수를 삽입하였습니다.
$ vi .zshrc
# 삽입할 내용
# pyenv
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# 변경 사항 적용
$ source .zshrc
# 명령어 테스트
$ pyenv
pyenv 2.3.35
Usage: pyenv <command> [<args>]
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
doctor Verify pyenv installation and development tools to build pythons.
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
...
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
이후 전역 시스템에 파이썬 설치를 진행했습니다.
우선, 기존에 설치되어 있는 특정 파이썬 버전이 있는 지 확인하고
있다면 제거 후 설치를 진행합니다.
# 기존 파이썬 설치 확인
$ which python
python not found
$ which python3
/usr/bin/python3
$ ls -al /usr/bin/python3
lrwxrwxrwx 1 root root 10 Aug 18 2022 /usr/bin/python3 -> python3.10
# 기존 파이썬 제거
$ sudo rm -rf /usr/bin/python3
$ which python3
python3 not found
---
# pyenv를 통해 파이썬 설치 및 기본 버전 설정
$ pyenv install -l
Available versions:
...
그런데 저의 경우 설치하려는데 아래와 같은 에러가 발생했습니다.
$ pyenv install 3.9.18
Downloading Python-3.9.18.tar.xz...
-> https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tar.xz
Installing Python-3.9.18...
BUILD FAILED/home/{}/.pyenv/plugins/python-build/bin/python-build: /usr/bin/lsb_release:
/usr/bin/python3: bad interpreter: No such file or directory
( using python-build 20180424)
Inspect or clean up the working tree at /tmp/python-build.20231212180403.3582
Results logged to /tmp/python-build.20231212180403.3582.log
Last 10 log lines:
checking for python... no
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... "linux"
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20231212180403.3582/Python-3.9.18':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
파이썬 빌드과정에 필요한 C 컴파일러가 없고 환경 변수에 등록되어 있지 않았기 때문에 위와 같은 에러가 발생했습니다.
해당 링크의 글을 살펴보면, pyenv 실행에 필요한 시스템 의존성을 위해 빌드 환경을 조성하는 사항에 대한 내용이 있습니다.
따라서 각 OS에 맞은 명령어를 통해 환경을 조성하고 파이썬 설치를 진행하면 됩니다.
# Ubuntu/Debian/Mint:
$ sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# 파이썬 버전 설치
$ pyenv install 3.9.18
Downloading Python-3.9.18.tar.xz...
-> https://www.python.org/ftp/python/3.9.18/Python-3.9.18.tar.xz
Installing Python-3.9.18...
Installed Python-3.9.18 to /home/nx3/.pyenv/versions/3.9.18
$ pyenv install 3.12.0
Downloading Python-3.12.0.tar.xz...
-> https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
Installing Python-3.12.0...
Installed Python-3.12.0 to /home/nx3/.pyenv/versions/3.12.0
$ pyenv versions
3.9.18
3.12.0
$ pyenv global 3.12.0
$ pyenv versions
3.9.18
* 3.12.0 (set by /home/nx3/.pyenv/version)
$ python -V
Python 3.12.0
위와 같이 3.9.18
버전과 3.12.0
버전을 각각 설치하고
전역 시스템에 3.12.0 버전을 채택해 python-3.12.0
으로 설정을 완료했습니다.
이외에도 pyenv 관련 활용 명령어 몇개를 적어 놓겠습니다.
$ pyenv install --list
이 명령어는 설치할 수 있는 Python 버전들의 목록을 보여줍니다.
기본 python 말고도 anaconda, pypy 등의 버전들도 있습니다.
$ pyenv global [Python 버전]
시스템 전체에서 사용할 Python 버전을 설정합니다.
$ pyenv local [Python 버전]
현재 디렉터리와 그 하위 디렉터리에서 사용할 Python 버전을 설정합니다.
이 설정은 해당 디렉터리에 .python-version 파일을 생성하여 저장됩니다.
$ pyenv virtualenv [Python 버전] [가상 환경 이름]
지정한 Python 버전을 기반으로 가상 환경을 생성합니다.
$ pyenv activate [가상 환경 이름]
가상 환경을 활성화합니다. 이후 실행되는 Python 명령어는 해당 가상 환경에 속합니다.
$ pyenv deactivate
현재 활성화된 가상 환경을 비활성화합니다.
$ pyenv versions
시스템에 설치된 Python 버전들의 목록을 보여줍니다.