검증된 문서입니다
클라우드 서버를 생성하여 이 문서의 명령을 처음부터 끝까지 그대로 실행하고 확인한 문서입니다.
- 운영체제
- Ubuntu 26.04.1 LTS · x86_64
- 설치 버전
- Python 3.15.0, Python 3.13.16 (소스 빌드), pyenv 2.8.10
- 테스트 서버
- DigitalOcean · 2 vCPU / 2 GB RAM / 60 GB SSD (s-2vcpu-2gb, sgp1)
- 마지막 확인
- 2026-10-16
이 문서에는 제휴 링크가 포함되어 있습니다. 링크를 통해 가입하면 코드샌드가 일정 수수료를 받을 수 있으며, 문서 내용과 평가에는 영향을 주지 않습니다.
Ubuntu 26.04 서버에 pyenv로 최신 Python을 설치하고, 여러 버전 설치와 프로젝트별 버전 변경, venv 가상환경과 pip 패키지 설치, 빌드 오류와 pyenv 명령을 찾을 수 없는 오류 해결, 깨끗하게 삭제하는 방법까지 정리합니다.
1. 준비물
- Ubuntu 26.04 LTS 서버 또는 PC 1대
sudo권한이 있는 일반 사용자 계정- 인터넷 연결 (GitHub와 python.org에서 파일을 내려받습니다)
서버가 없다면 DigitalOcean에서 Droplet을 생성해 보세요. pyenv는 Python을 소스 코드에서 직접 빌드하므로 CPU가 많을수록 빨리 끝납니다. 이 문서의 모든 과정은 Droplet(2 vCPU · 2GB 메모리 · 60GB SSD · Ubuntu 26.04 · 싱가포르)으로 서버를 생성하고, sudo 권한이 있는 일반 사용자 계정으로 확인했습니다.
2. 설치 전 상태 확인
Ubuntu 26.04에는 Python 3.14가 기본으로 들어 있습니다. 시스템 프로그램이 쓰는 Python이라 지우거나 다른 버전으로 바꾸면 안 됩니다.
python3 --versionPython 3.14.4python 명령은 없습니다. Ubuntu는 python3라는 이름으로만 Python을 제공합니다.
python --versionCommand 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3패키지를 설치하는 pip3도 없고, 가상환경을 만드는 venv도 바로 쓸 수 없습니다.
pip3 --versionCommand 'pip3' not found, but can be installed with:
sudo apt install python3-pippython3 -m venv myenvThe 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.14-venv
You may need to use sudo with that command. After installing the python3-venv
package, recreate your virtual environment.
Failing command: /home/devuser/myenv/bin/python3실패하면서 만들다 만 myenv 폴더가 남으므로 지웁니다. 출력은 없습니다.
rm -rf myenvPython 3.14는 2030년 10월까지 지원되는 버전이고, 이 문서를 확인한 날의 최신 Python은 3.15입니다. 이 문서는 시스템 Python은 그대로 두고 pyenv로 최신 Python을 사용자 폴더(~/.pyenv)에 따로 설치합니다. pyenv는 python.org의 소스 코드를 내려받아 빌드하고, 여러 버전을 설치해 두고 명령 한 줄로 바꿔 쓸 수 있게 해 줍니다.
3. 빌드에 필요한 패키지 설치
pyenv는 Python을 직접 빌드하므로 컴파일러와 라이브러리가 필요합니다. 먼저 패키지 목록을 갱신합니다. 출력의 앞부분(Hit, Get 줄)은 생략했습니다.
sudo apt updateFetched 4439 kB in 3s (1287 kB/s)
54 packages can be upgraded. Run 'apt list --upgradable' to see them.pyenv 위키에서 안내하는 빌드 패키지를 설치합니다. 컴파일러가 없으면 빌드가 실패하는 것은 9단계에서 볼 수 있습니다. 출력은 마지막 요약만 남겼습니다.
sudo apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl git libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libzstd-devREMOVING:
coreutils-from-gnu
Summary:
Upgrading: 13, Installing: 106, Removing: 1, Not Upgrading: 41
Download size: 99.6 MB
Space needed: 327 MB / 58.9 GB availableUbuntu 26.04에서는 빌드 패키지와 함께 coreutils-from-gnu 패키지 1개가 제거 대상으로 표시됩니다. 기본 명령어 묶음(coreutils)의 구성이 바뀌는 것이며, 이 문서의 이후 과정은 이 상태에서 모두 정상으로 진행되었습니다.
4. pyenv 설치
pyenv 설치 스크립트를 내려받아 실행합니다. curl -fsSL은 진행 표시 없이 내려받고, 실패하면 오류를 표시한다는 뜻입니다. 내려받은 스크립트는 | bash로 넘겨 바로 실행합니다. GitHub에서 pyenv와 플러그인을 내려받는 줄은 생략했습니다.
curl -fsSL https://pyenv.run | bashCloning into '/home/devuser/.pyenv'...
Cloning into '/home/devuser/.pyenv/plugins/pyenv-doctor'...
Cloning into '/home/devuser/.pyenv/plugins/pyenv-update'...
Cloning into '/home/devuser/.pyenv/plugins/pyenv-virtualenv'...
…
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 - bash)"
# Restart your shell for the changes to take effect.마지막 경고는 pyenv를 불러오는 설정을 아직 추가하지 않았다는 안내입니다. 안내된 세 줄을 ~/.bashrc 끝에 추가합니다. Ubuntu는 로그인할 때도 ~/.bashrc를 읽으므로 이 파일에만 추가하면 됩니다. 세 명령 모두 출력이 없습니다.
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc5. pyenv 설치 확인
설정을 추가하기 전의 터미널에서는 pyenv를 찾을 수 없다는 메시지가 표시됩니다.
pyenv --versionCommand 'pyenv' not found, but can be installed with:
sudo apt install pyenv-runtime안내된 패키지를 설치하지 마세요. 터미널을 닫고 새로 열거나(SSH라면 접속을 끊고 다시 접속), 아래 명령으로 ~/.bashrc를 다시 읽습니다. 출력은 없습니다.
source ~/.bashrcpyenv --versionpyenv 2.8.106. Python 최신 버전 설치
3.15처럼 앞 두 자리만 적으면 그 계열의 최신 버전을 설치합니다. 소스 코드를 내려받아 빌드하므로 몇 분 걸리고, Installing Python-3.15.0... 줄이 나온 뒤에는 끝날 때까지 화면에 아무것도 표시되지 않습니다.
pyenv install 3.15Downloading Python-3.15.0.tar.xz...
-> https://www.python.org/ftp/python/3.15.0/Python-3.15.0.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 34.03M 100 34.03M 0 0 245.2M 0 0
Installing Python-3.15.0...
Installed Python-3.15.0 to /home/devuser/.pyenv/versions/3.15.0설치된 버전을 확인합니다. system은 Ubuntu에 들어 있는 시스템 Python이고, *가 붙은 것이 지금 쓰는 버전입니다.
pyenv versions* system (set by /home/devuser/.pyenv/version)
3.15.0설치만 해서는 아직 시스템 Python을 씁니다. pyenv global로 기본 버전을 3.15로 정합니다. 출력은 없습니다.
pyenv global 3.15이제 python과 python3 모두 Python 3.15를 실행합니다. pip도 함께 설치되어 있습니다.
python --versionPython 3.15.0python3 --versionPython 3.15.0pip --versionpip 26.2.1 from /home/devuser/.pyenv/versions/3.15.0/lib/python3.15/site-packages/pip (python 3.15)실행되는 python은 pyenv가 만든 shims 폴더의 파일입니다. pyenv는 이 파일을 거쳐 지금 정해진 버전의 Python을 실행합니다.
which python/home/devuser/.pyenv/shims/python7. 다른 버전 설치와 프로젝트별 버전 변경
설치할 수 있는 버전은 pyenv install --list로 확인합니다. 목록이 길어서 3.13 계열만 골라 마지막 3줄을 표시했습니다.
pyenv install --list | grep -E '^ *3\.13\.[0-9]+$' | tail -n 3 3.13.14
3.13.15
3.13.16Python 3.13을 추가로 설치합니다. 이것도 빌드하므로 몇 분 걸립니다.
pyenv install 3.13Downloading Python-3.13.16.tar.xz...
-> https://www.python.org/ftp/python/3.13.16/Python-3.13.16.tar.xz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 22.14M 100 22.14M 0 0 160.2M 0 0
Installing Python-3.13.16...
Installed Python-3.13.16 to /home/devuser/.pyenv/versions/3.13.16pyenv versions system
3.13.16
* 3.15.0 (set by /home/devuser/.pyenv/version)특정 프로젝트 폴더에서만 3.13을 쓰려면 그 폴더에서 pyenv local을 실행합니다. 폴더에 .python-version 파일이 만들어지고, 이 폴더와 하위 폴더에서는 이 파일에 적힌 버전이 사용됩니다.
mkdir old-project && cd old-project
pyenv local 3.13cat .python-version3.13python --versionPython 3.13.16폴더를 벗어나면 다시 기본 버전인 3.15가 사용됩니다.
cd ~python --versionPython 3.15.08. venv 가상환경 만들고 패키지 설치
패키지는 프로젝트마다 가상환경을 만들어 그 안에 설치합니다. 그래야 프로젝트끼리 패키지 버전이 섞이지 않습니다. 새 터미널을 열고 hello-python 폴더에 가상환경(.venv)을 만든 뒤 켭니다(activate). 세 명령 모두 출력이 없습니다.
mkdir hello-python && cd hello-python
python -m venv .venv
source .venv/bin/activate가상환경을 켜면 프롬프트 앞에 (.venv)가 붙습니다. 가상환경의 Python 버전을 확인하고, HTTP 요청을 보내는 requests 패키지를 설치합니다. 설치 과정의 내려받기 줄은 생략했습니다.
python --versionPython 3.15.0pip install requestsCollecting requests
…
Installing collected packages: urllib3, idna, charset_normalizer, certifi, requests
Successfully installed certifi-2026.7.22 charset_normalizer-3.5.2 idna-3.20 requests-2.34.2 urllib3-2.8.0requests를 쓰는 app.py를 만들고 실행합니다. 첫 줄은 따옴표 안의 내용으로 파일을 만드는 명령이라 출력이 없습니다.
echo "import sys, requests; print('Hello Python', sys.version.split()[0], 'requests', requests.__version__)" > app.py
python app.pyHello Python 3.15.0 requests 2.34.2가상환경은 deactivate로 끕니다. 끈 상태에서 다시 실행하면 requests를 찾을 수 없다는 오류가 납니다. requests는 가상환경 안에만 설치되어 있기 때문입니다.
deactivate
python app.pyTraceback (most recent call last):
File "/home/devuser/hello-python/app.py", line 1, in <module>
import sys, requests; print('Hello Python', sys.version.split()[0], 'requests', requests.__version__)
^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'requests'9. 문제 해결
configure: error: no acceptable C compiler found in $PATH
3단계의 빌드 패키지를 설치하지 않고 pyenv install을 실행하면 컴파일러(gcc)가 없어 빌드가 실패합니다. 3단계의 sudo apt install을 실행한 뒤 pyenv install을 다시 실행하세요. 실패한 빌드는 자동으로 정리되므로 따로 지울 것은 없습니다.
pyenv install 3.15Installing Python-3.15.0...
BUILD FAILED (Ubuntu 26.04 using python-build 2.8.10)
Inspect or clean up the working tree at /tmp/python-build.20261016104806.3268
Results logged to /tmp/python-build.20261016104806.3268.log
…
configure: error: in '/tmp/python-build.20261016104806.3268/Python-3.15.0':
configure: error: no acceptable C compiler found in $PATH
…Command 'pyenv' not found, but can be installed with:
4단계에서 ~/.bashrc에 세 줄을 추가하기 전에 열린 터미널이라는 뜻입니다. 터미널을 닫고 새로 열거나 source ~/.bashrc를 실행하세요. 함께 안내되는 패키지는 설치하지 않습니다. 새 터미널에서도 같으면 tail -n 3 ~/.bashrc로 세 줄이 있는지 확인하세요.
sudo: 'python': command not found
sudo는 명령을 찾는 경로(PATH)를 시스템 기본 경로로 바꿔 실행하기 때문에 사용자 폴더의 pyenv Python을 찾지 못합니다. pyenv로 설치한 Python은 sudo 없이 실행하세요.
sudo python --versionsudo: 'python': command not foundModuleNotFoundError: No module named 'requests'
가상환경 안에 설치한 패키지를 가상환경 밖에서 실행했다는 뜻입니다. 프로젝트 폴더에서 source .venv/bin/activate로 가상환경을 켠 뒤 실행하세요.
pyenv uninstall 3.13을 실행해도 버전이 지워지지 않음
pyenv install과 달리 pyenv uninstall은 앞 두 자리만 적으면 아무 메시지 없이 끝나고 버전도 지워지지 않습니다. pyenv versions에 표시되는 전체 버전 번호(3.13.16)를 적으세요.
pyenv uninstall -f 3.13pyenv versions system
3.13.16
* 3.15.0 (set by /home/devuser/.pyenv/version)The virtual environment was not created successfully because ensurepip is not available.
시스템 Python(3.14)으로 python3 -m venv를 실행하면 나오는 메시지입니다. Ubuntu의 시스템 Python에는 가상환경을 만드는 데 필요한 패키지가 빠져 있습니다. pyenv로 설치한 Python에는 venv가 들어 있으므로, pyenv global로 버전을 정한 뒤 python -m venv로 만드세요.
error: externally-managed-environment
Ubuntu 26.04에서 sudo apt install python3-pip로 pip를 설치하고 pip3 install을 실행하면 나오는 오류입니다. 시스템 Python에 패키지를 직접 설치하면 apt로 설치한 시스템 패키지와 충돌할 수 있어 Ubuntu가 막아 두었습니다. 시스템 Python에 설치하지 말고, 8단계처럼 가상환경을 만들어 그 안에 설치하세요.
pip3 install requestserror: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
…10. 삭제하기
Python 버전 하나만 삭제
pyenv로 설치한 버전 하나만 지울 때는 pyenv uninstall에 전체 버전 번호를 적습니다. -f는 삭제할지 묻지 않고 바로 지운다는 뜻입니다.
pyenv uninstall -f 3.13.16pyenv: 3.13.16 uninstalledpyenv versions system
* 3.15.0 (set by /home/devuser/.pyenv/version)pyenv와 Python 모두 삭제
pyenv와 pyenv로 설치한 Python은 모두 ~/.pyenv 폴더 안에 있습니다. 먼저 4단계에서 ~/.bashrc에 추가한 세 줄을 확인합니다.
tail -n 3 ~/.bashrcexport PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"~/.pyenv 폴더와 연습용 폴더를 지우고, ~/.bashrc에서 세 줄을 지웁니다. sed -i는 파일을 바로 고친다는 뜻이고, /PYENV_ROOT/d와 /pyenv init/d는 그 글자가 들어간 줄을 지운다는 뜻입니다. 두 명령 모두 출력이 없습니다.
rm -rf ~/.pyenv ~/hello-python ~/old-project
sed -i '/PYENV_ROOT/d; /pyenv init/d' ~/.bashrc터미널을 닫고 새로 열어 확인합니다. pyenv를 찾을 수 없고, python3가 시스템 Python으로 돌아왔으면 삭제된 것입니다. 3단계에서 설치한 빌드 패키지는 다른 프로그램을 빌드할 때도 쓰므로 그대로 두었습니다.
pyenv --versionCommand 'pyenv' not found, but can be installed with:
sudo apt install pyenv-runtimepython3 --versionPython 3.14.4직접 해 보기
서버가 없다면 아래 업체에서 몇 분이면 Ubuntu 서버를 만들 수 있습니다. 이 문서는 DigitalOcean 에서 검증했습니다.
이 문서가 도움이 됐나요? 틀린 곳이나 바뀐 내용이 있으면 알려 주세요.
내용 정정 요청