Fedora already tracks CPython closely, and current Fedora releases expose far more than a single default interpreter. If you need to install Python on Fedora, the safer path is to stay inside DNF, pick the packaged version you actually need, and switch between interpreters with explicit binaries or versioned virtual environments instead of replacing the system default.
Fedora 43 ships python3 as Python 3.14.3, and its repositories also carry versioned builds for Python 3.13, 3.12, 3.11, 3.10, plus a Python 3.15 alpha preview. That packaged matrix is enough for most hosts, so the practical job is choosing the right repo package, switching safely, handling pip with versioned environments, and cleaning up versions you no longer need.
Install Python on Fedora
Fedora Workstation often already has Python 3 ready, while Server or minimal installs usually need a package install first. Fedora 43’s repositories already cover the current system interpreter, several older stable branches, and a 3.15 alpha preview, so manual source builds are unnecessary for most readers.
| Package | Binary | Fedora 43 Track | Use It When | Notes |
|---|---|---|---|---|
| python3 | python3 | 3.14.x | You want Fedora’s default interpreter | Safest choice for general system and project work |
| python3.13 | python3.13 | 3.13.x | You need a recent stable branch alongside Fedora’s default | Parallel repo package, does not replace python3 |
| python3.12 | python3.12 | 3.12.x | You need older but still current project compatibility | Parallel repo package, works well with versioned virtual environments |
| python3.11 | python3.11 | 3.11.x | You support more conservative application stacks | Parallel repo package, explicit binary name |
| python3.10 | python3.10 | 3.10.x | You need legacy compatibility from Fedora’s repos | Parallel repo package, explicit binary name |
| python3.15 | python3.15 | 3.15.0 alpha | You want to test the next upstream branch | Preview only, not a production recommendation |
Start with python3 unless an application, CI job, or compatibility target explicitly needs another branch. Treat python3.15 as a preview package for testing, not as the default Python you hand to production workloads.
- Use
python3for normal Fedora development and system-adjacent work. - Use
python3.13orpython3.12when a project needs a recent stable branch that differs from Fedora’s default. - Use
python3.11orpython3.10only for compatibility with older application stacks. - Use
python3.15only for preview testing and early compatibility work.
Check whether Fedora already has Python installed
Fedora Workstation frequently has the default interpreter ready before you install anything. Check python3 first so you know whether you need a package install or just version-specific add-ons.
python3 --version
Python 3.14.3
If that command already prints a version you can use, skip ahead to optional add-ons or alternate versions. If the shell says python3: command not found, continue with the package install step.
Update Fedora before installing Python
Refresh package metadata before adding or upgrading interpreters so DNF pulls the current Fedora 43 package set and dependency chain.
sudo dnf upgrade --refresh
These commands use
sudofor tasks that need root privileges. If your account does not have sudo access yet, follow the guide on how to add a user to sudoers on Fedora before continuing.
If you want more package-selection flags after the base install works, the DNF install examples on Fedora reference is useful background.
Install Fedora’s default Python package
The default repository path installs Fedora’s current system interpreter and keeps future updates inside the normal DNF workflow.
sudo dnf install python3
Verify that the default interpreter is available:
python3 --version
Python 3.14.3
Fedora’s default command is python3. The shorter python launcher comes from a separate optional package, which is why some hosts have it and others do not.
Install optional add-ons for Fedora’s default Python
Fedora splits several common extras into separate packages, so install only the pieces that match your workload.
python3-pipadds a system-levelpython3 -m pipcommand for Fedora’s default interpreter.python3-develadds headers and build files for C extensions and embedded Python work.python-unversioned-commandadds/usr/bin/pythonif you want the unversioned launcher.
sudo dnf install python3-pip python3-devel python-unversioned-command
If you installed the pip and unversioned-command packages, verify both:
python --version
python3 -m pip --version
Python 3.14.3 pip 25.1.1 from /usr/lib/python3.14/site-packages/pip (python 3.14)
Fedora does not ship versioned python3.x-pip packages for the alternate interpreters, so use the venv workflow below when you want pip with Python 3.13, 3.12, 3.11, 3.10, or 3.15.
The optional python launcher from python-unversioned-command still targets Fedora’s default Python branch. Installing python3.13 or python3.12 does not make python switch versions automatically.
Install popular Python add-on packages on Fedora
Fedora also packages several common Python add-ons that are worth knowing about when you need GUI tooling, debugging support, or a free-threaded runtime.
| Need | Default Branch Package | Versioned Example | What It Adds |
|---|---|---|---|
| Tkinter GUI support | python3-tkinter | python3.13-tkinter | Python’s Tk GUI toolkit |
| IDLE desktop editor | python3-idle | python3.13-idle | The bundled Python editor and shell |
| Debug runtime | python3-debug | Versioned debug builds vary by branch | A slower runtime with extra debugging hooks |
| Free-threaded runtime | Not shipped for the default 3.14 branch | python3.13-freethreading or python3.15-freethreading | A preview runtime built without the GIL |
Install only the packages you actually plan to use. Tkinter and IDLE install fine from a terminal or on a Server/minimal system, but they still need a graphical session to launch.
sudo dnf install python3-tkinter python3-idle python3-debug
sudo dnf install python3.13-idle python3.13-freethreading
Verify the package install and the free-threaded binary:
rpm -q python3-tkinter python3-idle python3-debug python3.13-idle python3.13-freethreading
python3.13t --version
python3-tkinter-3.14.3-1.fc43.x86_64 python3-idle-3.14.3-1.fc43.x86_64 python3-debug-3.14.3-1.fc43.x86_64 python3.13-idle-3.13.12-1.fc43.x86_64 python3.13-freethreading-3.13.12-1.fc43.x86_64 Python 3.13.12
Install alternate Python versions from Fedora’s repositories
Fedora 43’s repositories carry several versioned interpreters in parallel. Install only the branches you actually need, plus the matching -devel package when your project compiles native extensions.
sudo dnf install python3.13 python3.13-devel
sudo dnf install python3.12 python3.12-devel
sudo dnf install python3.11 python3.11-devel
sudo dnf install python3.10 python3.10-devel
Check the explicit versioned binaries after the install completes:
python3.13 --version
python3.12 --version
python3.11 --version
python3.10 --version
Python 3.13.12 Python 3.12.13 Python 3.11.15 Python 3.10.20
Install the Python 3.15 preview from Fedora’s repositories
Fedora 43 also packages a Python 3.15 alpha build. Treat it as a testing interpreter for early compatibility work, not as a drop-in replacement for your default Python branch.
python3.15is currently a pre-release package on Fedora 43. Use it for CI, porting work, or early validation against the upcoming branch, not for production deployments that need a stable runtime.
sudo dnf install python3.15 python3.15-devel
python3.15 --version
Python 3.15.0a7
Switch between packaged Python versions on Fedora
Fedora’s safe switching model is simple: leave the system default alone, call the interpreter you want explicitly, and use version-specific virtual environments when a project should see python instead of python3.x.
Fedora does not use alternatives for Python
Fedora 43 does not register Python through the alternatives system, which is a good thing for a system-critical runtime.
alternatives --display python3 2>/dev/null || echo "no python3 alternatives"
alternatives --display python 2>/dev/null || echo "no python alternatives"
no python3 alternatives no python alternatives
Do not try to repoint /usr/bin/python3 with alternatives or custom symlinks. Fedora’s desktop and system packages expect that interpreter to remain the distro-managed default.
Do not replace Fedora’s default Python interpreter
Do not alias
python3to another branch in your shell startup files, replace/usr/bin/python3with a custom symlink, or add a wrapper script that shadows Fedora’s default interpreter. GNOME Shell and other Fedora system packages depend on the distro-managed Python branch and can break if you silently swap it out.
If a project needs Python 3.12 or 3.13, call that interpreter directly or activate a matching virtual environment. That keeps the system runtime and your project runtime separate.
Use pip safely with packaged Python on Fedora
The default Fedora interpreter can use python3-pip outside a virtual environment, but that does not make system-wide pip installs a good idea. For project packages, virtual environments are still the safer default.
Using
sudo python3 -m pip install ...against Fedora’s packaged interpreter can overwrite files that RPM-managed packages expect. Fedora warns about that directly. Usepython3 -m venvorpython3.x -m venvfor project dependencies instead of installing them into the system interpreter.
python3 -m pip --version
python3.13 -m pip --version 2>&1 | sed -n '1p'
pip 25.1.1 from /usr/lib/python3.14/site-packages/pip (python 3.14) /usr/bin/python3.13: No module named pip
If you still force pip to run as root against Fedora’s packaged default interpreter, pip prints a warning about broken permissions and conflicts with RPM-managed packages. Take that warning literally and move the work into a virtual environment instead.
For the default python3 interpreter, python3-pip gives you pip outside a virtual environment. For versioned interpreters such as python3.13 and python3.12, Fedora’s practical pip path is the version-specific venv workflow below.
Check which packaged Python versions are installed on Fedora
This loop prints only the interpreters that are actually installed, so you can check the current version matrix without guessing which packages are present.
for bin in python3 python3.13 python3.12 python3.11 python3.10 python3.15; do
command -v "$bin" >/dev/null && "$bin" --version
done
Python 3.14.3 Python 3.13.12 Python 3.12.13 Python 3.11.15 Python 3.10.20 Python 3.15.0a7
Create version-specific virtual environments on Fedora
The safest way to “switch” Python versions for real project work is to create a virtual environment from the interpreter you want, then activate that environment when you need it.
python3.13 -m venv ~/venvs/py313
python3.12 -m venv ~/venvs/py312
source ~/venvs/py313/bin/activate
python --version
python -m pip --version
deactivate
source ~/venvs/py312/bin/activate
python --version
python -m pip --version
deactivate
Python 3.13.12 pip 25.1.1 from /home/joshua/venvs/py313/lib64/python3.13/site-packages/pip (python 3.13) Python 3.12.13 pip 25.1.1 from /home/joshua/venvs/py312/lib64/python3.12/site-packages/pip (python 3.12)
The same pattern works with python3.11, python3.10, and the python3.15 preview. Activating the matching environment gives your shell a clean python and pip for that exact interpreter without touching Fedora’s default Python branch.
Update Python on Fedora
Repo-packaged Python versions do not need a separate update script or alternatives step. DNF handles the default interpreter and every installed versioned package together.
Update all installed Python packages on Fedora
Refresh the metadata and let DNF upgrade every Python package you currently have installed.
sudo dnf upgrade --refresh
Check the installed interpreters after the upgrade finishes:
for bin in python3 python3.13 python3.12 python3.11 python3.10 python3.15; do
command -v "$bin" >/dev/null && "$bin" --version
done
Python 3.14.3 Python 3.13.12 Python 3.12.13 Python 3.11.15 Python 3.10.20 Python 3.15.0a7
That is the main update path for Fedora’s packaged interpreters. There is no version-specific helper script to maintain because DNF already owns the installed branches.
Troubleshoot Python on Fedora
The most common Python packaging problems on Fedora 43 are missing pip for the default interpreter, expecting versioned python3.x-pip packages that Fedora does not publish, and trying to treat an alternate interpreter as a system-wide replacement.
Fix “No module named pip” on Fedora
If python3 -m pip fails before you install python3-pip, Fedora is still using the base interpreter without the separate pip package.
/usr/bin/python3: No module named pip
Install Fedora’s pip package, then verify again:
sudo dnf install python3-pip
python3 -m pip --version
pip 25.1.1 from /usr/lib/python3.14/site-packages/pip (python 3.14)
Fix “No matching packages to list” for versioned pip packages on Fedora
Fedora does not publish versioned pip packages such as python3.12-pip, so DNF returns an empty match when you ask for one directly.
Updating and loading repositories: Repositories loaded. No matching packages to list
Use a versioned virtual environment instead. That gives you pip for the interpreter you actually want without looking for a nonexistent repo package.
python3.12 -m venv /tmp/py312-venv
source /tmp/py312-venv/bin/activate
python -m pip --version
deactivate
rm -rf /tmp/py312-venv
pip 25.1.1 from /tmp/py312-venv/lib64/python3.12/site-packages/pip (python 3.12)
Fix problems caused by replacing Fedora’s default Python
If commands or desktop components start failing after you changed python3 globally, undo that change first. Fedora expects its own packaged interpreter at /usr/bin/python3.
command -v python3
python3 --version
rpm -q --whatprovides /usr/bin/python3
/usr/bin/python3 Python 3.14.3 python3-3.14.3-1.fc43.x86_64
If command -v python3 points anywhere other than /usr/bin/python3, remove the alias, wrapper, or custom symlink that is shadowing Fedora’s interpreter. Then use explicit versioned binaries such as python3.12 or a matching virtual environment instead.
Remove Python on Fedora
On Fedora Workstation, removal usually means cleaning up optional add-ons, alternate repo interpreters, or project virtual environments. Fedora’s default python3 interpreter should stay installed.
A test
dnf remove python3transaction on Fedora 43 Workstation failed becausegnome-shellrequires/usr/bin/python3. Leave Fedora’s packaged default interpreter in place and remove only the optional pieces you added yourself.
Remove optional add-ons for Fedora’s default Python
If you no longer need system pip, development headers, or the unversioned launcher, remove those add-ons without touching Fedora’s core interpreter.
sudo dnf remove python3-pip python3-devel python-unversioned-command
rpm -q python3-pip python3-devel python-unversioned-command
package python3-pip is not installed package python3-devel is not installed package python-unversioned-command is not installed
Remove an alternate Python version from Fedora’s repositories
Use the same package pattern for any alternate interpreter branch you installed. This example removes Python 3.13 and its development package; swap the version number for 3.12, 3.11, 3.10, or 3.15 if needed.
sudo dnf remove python3.13 python3.13-devel
rpm -q python3.13 python3.13-devel
package python3.13 is not installed package python3.13-devel is not installed
Remove version-specific virtual environments on Fedora
Delete the environments you created for version switching when they are no longer useful.
rm -rf ~/venvs/py313 ~/venvs/py312
Python on Fedora FAQ
Yes. Fedora 43 ships python3 as the default 3.14 branch and also packages versioned interpreters such as python3.13, python3.12, python3.11, python3.10, plus a python3.15 alpha preview. Install the branch you need with DNF and call it explicitly by name.
No. Fedora 43 does not register Python through the alternatives system, and you should not retarget /usr/bin/python3 manually. Use explicit binaries such as python3.12 or python3.13, then create version-specific virtual environments when a project should see python.
For Fedora’s default python3 interpreter, the python3-pip package gives you pip outside a virtual environment, but virtual environments are still the safer choice for project dependencies. For alternate interpreters such as python3.12 or python3.13, Fedora does not publish versioned pip packages, so python3.x -m venv is the practical way to get pip for that branch.
Fedora ships packaged add-ons such as python3-devel for extension builds, python3-tkinter for GUI work, python3-idle for the bundled editor, and python3-debug for debug runtimes. Versioned branches also have their own matching add-ons, such as python3.13-idle and python3.13-freethreading.
Conclusion
Fedora’s repositories already give you a broad Python version matrix, so the safe workflow is to install the branch you need, call it explicitly, and switch project contexts with versioned virtual environments. To start building around it next, Install Git on Fedora for version control or Install Visual Studio Code on Fedora if you want a full editor around your Python workflow.
Formatting tips for your comment
You can use basic HTML to format your comment. Useful tags currently allowed:
<code>command</code>command<strong>bold</strong><em>italic</em><blockquote>quote</blockquote>