On Ubuntu or Fedora, keep the distribution-managed Python installation intact and use a separate virtual environment for each project. Ubuntu’s official guide provides package commands; Fedora’s exact commands depend on the release and whether the system is DNF- or rpm-ostree-managed, so verify them for your installation before adding packages.
Why you should keep system Python separate
Ubuntu includes a distribution-managed python3 used by system tools. The Ubuntu for Developers guide warns: “Do not remove the default system installation of Python (the python3 package), as that would break system tooling.” Do not replace /usr/bin/python3 with a manually installed interpreter or remove Ubuntu’s Python package.
Use the operating system’s package manager for system components, then create a project-specific virtual environment for application dependencies. This keeps project packages from changing the Python environment that distribution tools rely on.
Set up Python on Ubuntu
Install the fuller Python runtime
Python 3 is included in Ubuntu’s default system installation. If you want the fuller runtime described in Ubuntu’s guide, install python3-full:
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
sudo apt install -y python3-full
The guide says this metapackage includes the complete class library, virtual-environment support (venv), and IDLE. Package availability and the default Python version vary by Ubuntu release.
Install pip from Ubuntu packages if needed
Ubuntu’s guide also shows installing pip and its wheel package from the Ubuntu repositories:
sudo apt install -y python3-pip python3-pip-whl
These are Ubuntu package names; check availability for the release you are running.
Rank #2
Create an isolated environment for each project
In a terminal, create a project directory, make a virtual environment inside it, and activate it. The following commands follow the Ubuntu Python tutorial example:
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Repair Windows errors before they cause bigger problems3Fix the driver behind crashes, sound loss and screen glitches-
Create and enter a project directory:
mkdir -p ~/python/helloworld && cd ~/python/helloworld -
Create the environment:
python3 -m venv .venv -
Activate it in the current shell:
source .venv/bin/activate -
Check that Python resolves to the project environment:
which python3The result should point inside the project, for example
.../helloworld/.venv/bin/python3.
With the environment active, install dependencies for that project. If it has a requirements.txt file, use:
pip install -r requirements.txt
The Ubuntu tutorial uses requests as an illustration; it is not a package every project needs.
Recommended Free Tools
Handle Ubuntu’s externally managed environment warning
Ubuntu’s tutorial demonstrates that using pip outside a virtual environment can produce an externally-managed-environment error. The intended separation is straightforward: install system Python components with Ubuntu’s package manager and project dependencies inside the project’s virtual environment. The tutorial’s example error message says: “To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install.”
For standalone Python command-line applications rather than a project’s dependencies, the tutorial identifies pipx, which installs applications into managed isolated environments.
Set up Python on Fedora without guessing package commands
The exact Fedora setup depends on both the Fedora release and installation type. Fedora documentation distinguishes traditional systems managed with DNF from image-based systems managed with rpm-ostree. Because package names and commands can differ, first identify your release and system type, then consult the corresponding current Fedora documentation or the Fedora Developer Portal for Python packages, libraries, and toolchains.
The available Fedora documentation does not establish current copy-ready commands for Python, pip, virtual-environment support, or native-extension build prerequisites. This is a limit of the available guidance, not an indication that Fedora lacks Python support. A Fedora 27 release note discusses virtual environments and pip3 install --user in its historical context; it should not be treated as current installation advice.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Best Value
Once Python and virtual-environment support are available on your Fedora system, the safe general approach is to create a separate environment per project and install that project’s dependencies there. Confirm the appropriate bootstrap and package commands against documentation for your specific Fedora release and installation type.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Choose optional editor and quality tools by need
An editor, IDE, formatter, linter, test framework, or automation tool is not required just to install Python and create a virtual environment. Ubuntu’s guide names these examples; their installation channels and availability can change, so check the instructions for your distribution and release.
| Need | Examples named by Ubuntu’s guide | How to choose |
|---|---|---|
| Editing and general development | Vim with Python LSP Server, VSCodium, Visual Studio Code, PyCharm Community, Eclipse with PyDev | Choose a lightweight editor with extensions or a fuller integrated IDE based on how you prefer to edit, navigate, and debug code. |
| Scientific application development | Spyder | The guide describes Spyder as focused on scientific applications; consider it if that workflow matches your project. |
| Basic Python editing | IDLE | Ubuntu’s python3-full metapackage includes IDLE, according to the guide. |
| Formatting | Black | Add a formatter if you want consistent code formatting. |
| Code checking | Flake8 | Add a checker when you want automated feedback on code issues. |
| Testing | pytest | Use a test framework when your project needs automated tests. |
| Test automation across environments | tox | Consider automation when you need to run checks across multiple environments. |
These tools address different jobs; there is no need to install them all on day one, and no single editor is established as best for every developer.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

