일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- helm
- jvm
- Python
- kubernetes
- Vision
- aws s3
- log
- Packet
- CVAT
- EC2
- Trino
- AWS
- zookeeper
- Kafka
- Spring
- Network
- MAC address
- tcp
- Operating System
- docker
- OS
- java
- kubeadm
- CSV
- kubectl
- grafana
- airflow
- PostgreSQL
- JavaScript
- ip
- Today
- Total
JUST WRITE
버전관리가 가능한 python 환경 세팅 - pyenv 설치 본문
pyenv
python으로 개발을 진행하다 보면 항상 버전 문제로 골머리를 앓게 됩니다.
python이 제공하는 library가 정말 다양해서 편하기도 하지만 단점도 존재합니다.
필요한 python library가 특정 python 버전까지만 지원한다든지,
python library와 종속된 library끼리 compatible 한 버전을 맞춰야 하는 발생 합니다.
python에서 virtual 환경을 구성, 독립된 환경에서 다른 프로젝트에 영향이 없도록 세팅할 수 있습니다.
venv라는 것을 기본적으로 제공해 줍니다.
하지만 더 편하게 python virtual 환경을 제공해 주는 Tool이 있습니다.
바로 pyenv입니다.
pyenv를 통해 다양한 버전관리가 가능한 python 개발환경을 구축할 수 있습니다.
이번 포스팅에서 AWS EC2에서 pyenv를 설치과정을 정리해 보았습니다.
pyenv 설치
저는 AWS EC2 t3.small / Amazon Linux 2023 인스턴스에서 설치를 진행하였습니다.
pyenv 설치하기 전에 먼저 필요한 Linux package를 설치합니다.
Ubuntu 환경에서도 필요한 package 설치를 정리하였습니다.
# Fedor, Centos
$ sudo yum groupinstall -y "Development Tools"
$ sudo yum install -y git ncurses-devel libffi libffi-devel readline-devel bzip2-devel openssl-devel sqlite-devel
# Ubuntu
$ sudo apt-get update
$ sudo apt-get install -y gcc make zlib1g-dev libbz2-dev libncurses5-dev libffi-dev libreadline-dev libssl-dev libsqlite3-dev python3-tk tk-dev liblzma-dev
pyenv는 하나의 command로 설치가 가능합니다.
아래 project에서 해당 command 설치가 가능하도록 구성하였습니다.
# pyenv 설치
$ cd ~
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
$ ll ~/.pyenv
total 252
-rw-r--r--. 1 ec2-user ec2-user 48653 Apr 29 04:16 CHANGELOG.md
-rw-r--r--. 1 ec2-user ec2-user 11394 Apr 29 04:16 COMMANDS.md
-rw-r--r--. 1 ec2-user ec2-user 3380 Apr 29 04:16 CONDUCT.md
-rw-r--r--. 1 ec2-user ec2-user 6724 Apr 29 04:16 CONTRIBUTING.md
-rw-r--r--. 1 ec2-user ec2-user 680 Apr 29 04:16 Dockerfile
-rw-r--r--. 1 ec2-user ec2-user 1092 Apr 29 04:16 LICENSE
-rw-r--r--. 1 ec2-user ec2-user 1033 Apr 29 04:16 MAINTENANCE.md
-rw-r--r--. 1 ec2-user ec2-user 928 Apr 29 04:16 Makefile
-rw-r--r--. 1 ec2-user ec2-user 27886 Apr 29 04:16 README.md
drwxr-xr-x. 2 ec2-user ec2-user 19 Apr 29 04:16 bin
drwxr-xr-x. 2 ec2-user ec2-user 59 Apr 29 04:16 completions
drwxr-xr-x. 2 ec2-user ec2-user 16384 Apr 29 04:16 libexec
drwxr-xr-x. 3 ec2-user ec2-user 18 Apr 29 04:16 man
drwxr-xr-x. 6 ec2-user ec2-user 108 Apr 29 04:16 plugins
drwxr-xr-x. 5 ec2-user ec2-user 47 Apr 29 04:16 pyenv.d
drwxr-xr-x. 2 ec2-user ec2-user 92 Apr 29 04:16 src
-rw-r--r--. 1 ec2-user ec2-user 104764 Apr 29 04:16 terminal_output.png
drwxr-xr-x. 3 ec2-user ec2-user 16384 Apr 29 04:16 test
홈 디렉터리에. pyenv 폴더가 생긴 것을 확인할 수 있습니다.
추가적으로 환경변수를 세팅합니다.
$ vi ~/.bashrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PYENV_ROOT/shims:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
$ source ~/.bashrc
환경변수까지 세팅이 끝나면 pyenv 설치가 완료됩니다.
$ pyenv
pyenv 2.3.17
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
latest Print the latest installed or known version with the given prefix
local Set or show the local application-specific Python version(s)
prefix Display prefixes for Python versions
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 Python versions
update Update pyenv, its plugins including the list of available versions
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
See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
virtual 환경 구성
pyenv으로 python virtual 환경을 구성해 보겠습니다.
먼저 구성한 python 버전을 설치합니다.
저는 python 3.7.13을 설치하였습니다.
$ pyenv install 3.7.13
Downloading Python-3.7.13.tar.xz...
-> https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tar.xz
Installing Python-3.7.13...
patching file Doc/library/ctypes.rst
patching file Lib/test/test_unicode.py
patching file Modules/_ctypes/_ctypes.c
patching file Modules/_ctypes/callproc.c
patching file Modules/_ctypes/ctypes.h
patching file setup.py
patching file 'Misc/NEWS.d/next/Core and Builtins/2020-06-30-04-44-29.bpo-41100.PJwA6F.rst'
patching file Modules/_decimal/libmpdec/mpdecimal.h
patching file setup.p
Installed Python-3.7.13 to /home/ec2-user/.pyenv/versions/3.7.13
# 버전 설치 확인
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
3.7.13
설치한 3.7.13 버전으로 virtual 환경을 구성합니다.
test라는 이름으로 virtual환경을 구성해 보았습니다.
$ pyenv virtualenv 3.7.13 test
Looking in links: /tmp/tmpollp3mes
Requirement already satisfied: setuptools in /home/ec2-user/.pyenv/versions/3.7.13/envs/test/lib/python3.7/site-packages (47.1.0)
Requirement already satisfied: pip in /home/ec2-user/.pyenv/versions/3.7.13/envs/test/lib/python3.7/site-packages (22.0.4)
$ pyenv versions
* system (set by /home/ec2-user/.pyenv/version)
3.7.13
3.7.13/envs/test
test --> /home/ec2-user/.pyenv/versions/3.7.13/envs/test
그럼 workspace 폴더를 생성하여 해당 path에서 virtual 환경이 세팅되도록 하겠습니다.
pyenv local command로 설정이 가능합니다.
설정 후 python 버전을 확인하면 3.7.13인 것을 확인할 수 있습니다.
$ pyenv local test
(test) [ec2-user@ip-172-31-33-5 workspace]$ python -V
Python 3.7.13
1개의 Server에서 여러 가지 python 버전을 설치해서 구성이 가능하고,
1개의 버전에서 여러 가지 독립적인 python 개발 환경을 구성할 수 있습니다.
'Programing > Python' 카테고리의 다른 글
venv (0) | 2022.03.23 |
---|