191 lines
3.5 KiB
Markdown
191 lines
3.5 KiB
Markdown
# 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 <package>
|
|
```
|
|
|
|
---
|
|
|
|
## 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)
|