Python 2는 2020년 1월 1일부터 더 이상 지원되지 않는다. 버그 수정, 보안 패치, 새로운 기능의 역포팅(backporting)이 이뤄지지 않는다. Python 2를 사용하는 데 따른 책임은 본인에게 있다.
만약 Python 2 예제 코드 등을 확인할 일이 있다면 2to3를 사용할 수 있다.
2to3 -w .
- Managing Multiple Python Versions With pyenv - Real Python
Build Dependencies
# Ubuntu/Debian
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl
# Fedora/CentOS/RHEL
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel openssl-devel xz xz-devel libffi-devel
# macOS
brew install openssl readline sqlite3 xz zlib
curl https://pyenv.run | bash
# ~/.zshrc
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
exec $SHELL
# 3.9.*, 3.10.*
pyenv install --list | egrep " 3\.(9|10)\."
pyenv install 3.9.16 -v
# /home/markruler/.pyenv/versions/3.9.16
pyenv versions ✭
* system (set by /home/markruler/.pyenv/version)
3.9.16
pyenv install 3.10.9 -v
# /home/markruler/.pyenv/versions/3.10.10
sudo apt install python3-pip
python --version
# command not found: python
python3 --version
# Python 3.10.4
pip --version
# pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
pip3 --version
# pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
python3 -m pip3 install --upgrade pytest
pytest --version
# command not found: pytest
일반적으로 설치했을 경우 $HOME/.local/bin
에 설치되기 때문에
전역적으로 사용하려면 python3
명령어를 사용하거나
$HOME/.local/bin
을 $PATH
에 추가한다.
혹은 간단하게 심볼릭 링크를 생성한다.
python3 -m pytest --version
# pytest 7.1.3
sudo ln $HOME/.local/bin/pytest /usr/local/bin/pytest
pytest --version
# pytest 7.1.3
기본적으로 2.7.5가 설치되어 있다.
python --version
# Python 2.7.5
YUM을 이용해 설치하면 3.6.8이 설치된다.
sudo yum install python3
python --version
# Python 3.6.8
3.10을 설치하기 위해서는 직접 설치해야 한다.
sudo yum install gcc openssl-devel bzip2-devel libffi-devel
cd /tmp
curl -LO https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz
tar xf Python-3.10.7.tar.xz
cd Python-3.10.7
ssl 모듈을 사용하려면 openssl 1.1.1을 설치해야 한다.
sudo yum install openssl-devel
openssl version
# OpenSSL 1.0.2k-fips 26 Jan 2017
sudo yum remove openssl-devel
yum install gcc gcc-c++ pcre-devel zlib-devel perl wget
cd /tmp
# https://www.boho.or.kr/data/secNoticeView.do?bulletin_writing_sequence=66719
# https://www.openssl.org/source/
curl -LO https://www.openssl.org/source/openssl-1.1.1q.tar.gz
sha256sum openssl-1.1.1q.tar.gz
curl https://www.openssl.org/source/openssl-1.1.1q.tar.gz.sha256
tar xf openssl-1.1.1q.tar.gz
cd openssl-1.1.1q
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
sudo make install
echo "/usr/local/ssl/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1q.conf
which openssl
# /usr/bin/openssl
sudo mv /usr/bin/openssl /usr/bin/openssl-1.0.2k
sudo ldconfig -v
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
openssl version
# OpenSSL 1.1.1q 5 Jul 2022
openssl 경로와 함께 python을 설치한다.
# ./configure --enable-optimizations
# sudo make altinstall
# Could not build the ssl module!
# Python requires a OpenSSL 1.1.1 or newer
cd /tmp/Python-3.10.7
./configure --with-openssl=/usr/local/ssl
sudo make altinstall
python3.10 --version
# Python 3.10.7
python3라는 명령어를 사용하기 위해서는 심볼릭 링크를 생성한다.
which python3.10
# /usr/local/bin/python3.10
sudo ln /usr/local/bin/python3.10 /usr/local/bin/python3
python3 --version
# Python 3.10.7
wsl
sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt install python3-pip
pip install --upgrade pytest
echo "export PATH=\$PATH:/home/markruler/.local/bin" >> .bashrc
source .bashrc
pytest --version
# pytest 7.1.3
pytest
python -m pip
를 사용해야 하는 이유- What's the difference between a Python module and a Python package?
# https://bugs.python.org/issue22295
python3 -m pip install $PACKAGE
The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command.
# 만약 커맨드가 없다면
apt install python3.11-venv
# python3 -m venv {venv_name}
python3 -m venv venv
echo "venv" >> .gitignore
# Unixlike
source venv/bin/activate
# Windows
venv\Scripts\activate
- 파이썬 스킬 업 (Supercharged Python)
- 고성능 파이썬 (High Performance Python)
- 전문가를 위한 파이썬 프로그래밍 (Expert Python Programming) 4/e
- 파이썬 코딩의 기술 (Effective Python) 2/e
- CPython 파헤치기
- 테스트 주도 개발 - 켄트 벡
- 클린 코드를 위한 테스트 주도 개발 (Django) - 해리 J.W. 퍼시벌
- 파이썬 클린 코드 - 마리아노 아나야
- 우아하게 준비하는 테스트와 리팩토링 - 한성민, PyCon Korea
- 파이썬에서 편하게 테스트 케이스 작성하기 - 박종현, PyCon Korea