Of course! Here is a comprehensive guide to installing python-devel on CentOS, covering different versions of CentOS and Python.

What is python-devel?
First, it's important to understand what python-devel (or its modern equivalent, python3-devel) is and why you need it.
- Purpose: This package contains the header files and development libraries (like
libpythonX.Y.so) needed to build C and C++ extensions for Python. - Analogy: If you think of Python as a car, the main Python package (
pythonorpython3) is the car itself.python-develis the complete service manual and a full set of spare parts. You need it to build custom parts (C extensions) that bolt onto the car. - Common Use Cases: You will need this package when you are installing Python packages that have C components, such as:
numpy,scipy,pandas(for performance-critical operations)psycopg2(PostgreSQL database adapter)cryptographylxml- Many other packages from PyPI that use Cython or C code.
The Modern Approach: python3-devel
For modern systems, you should almost always use python3-devel. The package name python-devel on newer CentOS systems often points to the legacy Python 2 development package.
The exact package name can vary slightly depending on your CentOS version and the specific Python version you are targeting (e.g., python3.8-devel, python3.9-devel).
Step-by-Step Installation Guide
Follow the steps that match your CentOS version.

Prerequisites
Before you start, it's always a good idea to update your package database.
sudo yum check-update # or for newer CentOS versions sudo dnf check-update
For CentOS 8 and CentOS Stream (Recommended Method)
CentOS 8 and later use DNF (dnf) as the default package manager instead of YUM (yum). DNF is more modern and has better dependency resolution.
Identify Your Default Python 3 Version
On CentOS 8/Stream, python3 is typically the default, but you should check which version is linked by default.
python3 --version
This will likely output something like Python 3.6.8 or Python 3.9.18, depending on your specific updates.

Install python3-devel
Use the dnf command to install the development package.
# This command installs the development files for your default python3 version sudo dnf install python3-devel
If you need a specific Python version, replace python3-devel with the specific version. For example, for Python 3.9:
sudo dnf install python3.9-devel
DNF will automatically handle dependencies and install the package.
Verify the Installation
You can verify that the header files and libraries are now available.
# Check if the directory exists ls /usr/include/python3.9/ # You should see files like Python.h, pyconfig.h, etc.
For CentOS 7 and Earlier
CentOS 7 uses the older YUM (yum) package manager.
Identify Your Python Version
Check if you have Python 3 installed, as CentOS 7 comes with Python 2.7 by default.
python --version # This will likely be Python 2.7 python3 --version # This may not be installed or may be an old version
Install python3-devel
Use the yum command.
# For the default python3 version sudo yum install python3-devel
If you need a specific Python version, you must specify it. For example, for Python 3.6:
sudo yum install python3.6-devel
Note: On CentOS 7, you might need to enable the EPEL (Extra Packages for Enterprise Linux) repository to get more recent Python 3 versions. If yum can't find the package, you may need to do this first.
# Install the EPEL release package sudo yum install epel-release # Now try installing the specific python3-devel version again sudo yum install python3.6-devel
Verify the Installation
# Check if the directory exists ls /usr/include/python3.6/
Troubleshooting and Common Errors
Error: Error: No package python3-devel available.
This usually means one of two things:
- You are on a very old CentOS version (like CentOS 6) where
python3was not standard. - The package name is slightly different for your specific Python version.
Solution: Try to find the correct package name using yum or dnf.
# For CentOS 7 sudo yum search python3-devel # For CentOS 8+ sudo dnf search python3-devel
This will list all available packages. Look for one that matches your Python version (e.g., python3.8-devel.x86_64).
Error: fatal error: Python.h: No such file or directory
This error occurs when you are trying to compile a Python package (e.g., using pip install some-package-with-c-code) and the python-devel package is not installed.
Solution: Simply install the correct development package as described above. After installation, try compiling the package again.
# Example: Installing psycopg2 after installing python3-devel pip install psycopg2-binary
Summary Table
| CentOS Version | Package Manager | Recommended Command | Notes |
|---|---|---|---|
| CentOS 8 / Stream | DNF | sudo dnf install python3-devel |
Use this for the default system Python 3. |
| CentOS 7 | YUM | sudo yum install python3-devel |
May need epel-release for newer Python versions. |
| Any Version | - | sudo <package_manager> install pythonX.Y-devel |
Replace X.Y with your specific Python version (e.g., 9). |
