How to Install Python on Fedora Linux

Last updated Saturday, March 21, 2026 1:04 pm 11 min read

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.

PackageBinaryFedora 43 TrackUse It WhenNotes
python3python33.14.xYou want Fedora’s default interpreterSafest choice for general system and project work
python3.13python3.133.13.xYou need a recent stable branch alongside Fedora’s defaultParallel repo package, does not replace python3
python3.12python3.123.12.xYou need older but still current project compatibilityParallel repo package, works well with versioned virtual environments
python3.11python3.113.11.xYou support more conservative application stacksParallel repo package, explicit binary name
python3.10python3.103.10.xYou need legacy compatibility from Fedora’s reposParallel repo package, explicit binary name
python3.15python3.153.15.0 alphaYou want to test the next upstream branchPreview 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 python3 for normal Fedora development and system-adjacent work.
  • Use python3.13 or python3.12 when a project needs a recent stable branch that differs from Fedora’s default.
  • Use python3.11 or python3.10 only for compatibility with older application stacks.
  • Use python3.15 only 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 sudo for 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-pip adds a system-level python3 -m pip command for Fedora’s default interpreter.
  • python3-devel adds headers and build files for C extensions and embedded Python work.
  • python-unversioned-command adds /usr/bin/python if 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.

NeedDefault Branch PackageVersioned ExampleWhat It Adds
Tkinter GUI supportpython3-tkinterpython3.13-tkinterPython’s Tk GUI toolkit
IDLE desktop editorpython3-idlepython3.13-idleThe bundled Python editor and shell
Debug runtimepython3-debugVersioned debug builds vary by branchA slower runtime with extra debugging hooks
Free-threaded runtimeNot shipped for the default 3.14 branchpython3.13-freethreading or python3.15-freethreadingA 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.15 is 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 python3 to another branch in your shell startup files, replace /usr/bin/python3 with 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. Use python3 -m venv or python3.x -m venv for 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 python3 transaction on Fedora 43 Workstation failed because gnome-shell requires /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

Does Fedora 43 package multiple Python versions?

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.

Should I use alternatives to switch Python on Fedora?

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.

Do I need a virtual environment to use pip on Fedora?

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.

What popular Python add-on packages does Fedora ship?

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.

Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffee Buy me a coffee

Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Leave a Comment

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: