Checking Current Python Version
Before updating Python, verify the installed versions on your CentOS system using:
python --version # Checks Python 2.x (if installed)
python3 --version # Checks Python 3.x (default in CentOS 7+)
This helps determine whether an update is needed and identifies the current default version.
Updating System Packages
Ensure your system’s package index is up-to-date to avoid compatibility issues during Python installation:
sudo yum update -y # For CentOS 7
sudo dnf update -y # For CentOS 8+
This step installs the latest security patches and dependencies required for Python.
Installing/Updating Python via Yum/DNF (Recommended for Stability)
The easiest way to install or update Python is using CentOS’ native package manager. This method ensures compatibility with system tools but may not provide the latest Python versions.
sudo yum install epel-release -y # Enable EPEL for additional packages
sudo yum install python3 -y # Installs/updates Python 3 (e.g., 3.6)
sudo dnf install epel-release -y
sudo dnf install python3 -y # Installs/updates Python 3 (e.g., 3.9)
After installation, verify the version:
python3 --version
To set Python 3 as the default python
command (optional), use:
sudo alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo alternatives --config python # Select Python 3 from the list
Installing/Updating Python from Source (For Latest Versions)
If you need a specific Python version (e.g., 3.11) or custom optimizations, compile from source. This method requires manual dependency management but offers flexibility.
sudo yum groupinstall "Development Tools" -y # Compilers, make, etc.
sudo yum install openssl-devel bzip2-devel libffi-devel wget -y # Python build dependencies
cd /usr/src # Recommended directory for source files
sudo wget https://www.python.org/ftp/python/3.11.6/Python-3.11.6.tgz
sudo tar xzf Python-3.11.6.tgz
cd Python-3.11.6
sudo ./configure --enable-optimizations # Optimizes Python performance
sudo make altinstall # Avoids overwriting system Python (installs as python3.11)
Note: Use altinstall
instead of install
to prevent conflicts with the system’s default Python.python3.11 --version # Replace with your installed version
Managing Multiple Python Versions with pyenv
For users needing multiple Python versions (e.g., 3.8 for legacy apps, 3.11 for new projects), pyenv
is a powerful tool. It allows easy switching between versions without affecting system stability.
curl https://pyenv.run | bash
Add the following to your ~/.bashrc
(or ~/.zshrc
) to enable pyenv:export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
Reload the shell:source ~/.bashrc
pyenv install 3.11.6 # Installs Python 3.11.6
pyenv global 3.11.6 # Sets as the default Python for the user
Verify with:python --version # Should show 3.11.6
To install a specific version for a project (without changing the global default):cd /path/to/project
pyenv local 3.8.12 # Creates a .python-version file for the project
Creating Virtual Environments (Best Practice for Isolation)
After updating Python, always use virtual environments to isolate project dependencies and avoid conflicts.
sudo yum install python3-venv -y
python3 -m venv myenv # Creates a virtual environment named 'myenv'
source myenv/bin/activate # Activates the environment (changes prompt to (myenv))
Once activated, install packages using pip
(e.g., pip install numpy
). Deactivate with deactivate
when done.Key Notes for a Safe Update
/etc
, /home
).yum
). Always use altinstall
or tools like pyenv
to prevent breakage.