# Python Installation - Ubuntu/Debian ## Check Current Version ```bash python3 --version ``` If you see Python 3.11+, you're good to go! [← Back to main skill](../SKILL.md#step-2-create-virtual-environment) --- ## Installation Methods ### Option 1: From Ubuntu PPA (Recommended for Latest Versions) **For Python 3.13 (latest):** ```bash sudo apt update sudo apt install software-properties-common -y sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update sudo apt install python3.13 python3.13-venv python3.13-dev -y ``` **For Python 3.11:** ```bash sudo apt update sudo apt install software-properties-common -y sudo add-apt-repository ppa:deadsnakes/ppa -y sudo apt update sudo apt install python3.11 python3.11-venv python3.11-dev -y ``` **Verify installation:** ```bash python3.13 --version ``` --- ### Option 2: System Package Manager (Older Versions) **Ubuntu 22.04+ includes Python 3.10+ by default:** ```bash sudo apt update sudo apt install python3 python3-venv python3-pip python3-dev -y ``` **Check version:** ```bash python3 --version ``` --- ### Option 3: pyenv (Multiple Versions) **Install dependencies:** ```bash sudo apt update sudo apt install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev ``` **Install pyenv:** ```bash curl https://pyenv.run | bash ``` **Add to ~/.bashrc or ~/.zshrc:** ```bash export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" eval "$(pyenv init -)" ``` **Reload shell:** ```bash source ~/.bashrc # or source ~/.zshrc ``` **Install Python 3.13:** ```bash pyenv install 3.13.0 pyenv global 3.13.0 ``` **Verify:** ```bash python --version ``` --- ## Set Default Python Version **If you installed Python 3.13 but `python3` still points to old version:** ```bash sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.13 1 sudo update-alternatives --config python3 ``` **Select the number for Python 3.13** --- ## Install pip **For Python 3.13:** ```bash sudo apt install python3.13-distutils -y curl -sS https://bootstrap.pypa.io/get-pip.py | python3.13 ``` **Or use system package:** ```bash sudo apt install python3-pip -y ``` **Verify:** ```bash python3 -m pip --version ``` --- ## Troubleshooting ### Issue: `E: Unable to locate package python3.13` **Solution:** Add deadsnakes PPA (see Option 1 above) ### Issue: `No module named 'venv'` **Install venv module:** ```bash sudo apt install python3.13-venv -y ``` ### Issue: `No module named 'distutils'` **Install distutils:** ```bash sudo apt install python3.13-distutils -y ``` ### Issue: Build dependencies missing (for pyenv) **Install build essentials:** ```bash sudo apt install build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev -y ``` ### Issue: Permission denied when installing packages **Don't use sudo with pip!** Use virtual environments instead: ```bash python3 -m venv venv source venv/bin/activate pip install ``` --- ## Verification Checklist - [ ] `python3 --version` shows 3.11+ - [ ] `python3 -m venv --help` shows venv usage - [ ] `python3 -m pip --version` works - [ ] Can create test venv: `python3 -m venv test_venv` - [ ] Can activate: `source test_venv/bin/activate` **Clean up test:** ```bash rm -rf test_venv ``` --- [← Back to django-project-setup](../SKILL.md)