1
0
mirror of https://github.com/tiyn/wiki.git synced 2026-07-26 04:21:34 +02:00

Python: Added Arch-Migration for Globally Installed pip Packages

This commit is contained in:
2026-07-14 02:50:37 +02:00
parent 4481305b38
commit 1f9c5e2f85
2 changed files with 79 additions and 21 deletions

View File

@@ -2,13 +2,13 @@
In [Arch Linux](/wiki/linux/arch-linux.md) there are 2 main types of
package managers.
The first is pacman, the default package manager.
The first is Pacman, the default package manager.
For the second type there are many different managers to chose from.
Those managers are handling for the Arch User Repositories (AUR).
In this article yay is used as the go to AUR manager.
yay is also a wrapper for pacman so yay can be used instead of pacman to
yay is also a wrapper for Pacman so yay can be used instead of Pacman to
install and update both AUR and main repository programs.
It features the same syntax.
@@ -204,6 +204,71 @@ pacman -F <file>
For example, this can be used to determine which package provides a missing binary, library or
configuration file.
### Replacing Globally Installed Python Packages
[Python](/wiki/programming_language/python.md) packages installed using
[pip](/wiki/programming_language/python/pip.md) are not managed by Pacman or Yay.
Whenever possible, Python packages should instead be installed using a
[package manager](/wiki/linux/package_manager.md) and the official repositories or the AUR.
This allows them to be updated together with the rest of the system and avoids conflicts with the
system package manager.
However, project-specific dependencies should generally be installed inside
[virtual environments](/wiki/programming_language/python.md#venv-virtual-environments) instead of
globally.
To begin replacing globally installed Python packages, first list all explicitly installed Python
packages.
```sh
pacman -Qet | grep -E '^(python-|python3-)'
```
These packages are usually candidates to keep, as they are already managed by the system package
manager.
Next check for Python packages that exist on the file system but are not owned by Pacman.
The following command searches the global Python installation for unmanaged packages.
```sh
find /usr/lib/python*/site-packages -maxdepth 1 \
| while read package; do
pacman -Qo "$package" >/dev/null 2>&1 || echo "$package"
done
```
Some manually installed packages may instead reside in `/usr/local`.
These can be listed using the following command.
```sh
find /usr/local/lib/python*/site-packages -maxdepth 1
```
For each package that is unmanaged or managed by another source than Pacman or Yay determine the
package name.
Then search whether it is available using Pacman or Yay.
```sh
pacman -Ss <package>
yay -Ss <package>
```
If it is, uninstall the package.
For this pip could be used like shown in the following command.
Finally, reinstall the package using the Pacman or Yay.
```sh
yay -S <package>
```
Note that the packages may not have the same name.
Often the package has a prepended `python-` for Pacmand and Yay packages, however, this does not
have to be the case.
Packages that are not available in either the official repositories or the AUR can still be
installed using tools such as [pip](/wiki/programming_language/python/pip.md) or
[uv](/wiki/programming_language/python/uv.md).
### Hooks
Hooks are commands that are run before or after installation of one or more packages.

View File

@@ -19,31 +19,24 @@ It is generally recommended to install packages inside a
Alternatively, project-based package managers such as [uv](/wiki/programming_language/python/uv.md)
can be used.
On some Linux distributions global installation may require the
Global installation using pip is not recommended and
[system package manager](/wiki/linux/package_manager.md#list-of-package-managers) should be
preferred.
When installing globally, however, on some Linux distributions global installation may require the
`--break-system-packages` flag.
```sh
pip install --break-system-packages <package>
```
This option should only be used if the package cannot be installed using the
[system package manager](/wiki/linux/package_manager.md#list-of-package-managers) or inside a
virtual environment.
### Removing Packages
### Migrating Global Packages to the System Package Manager
Installed packages can be removed by replacing `<package>` with the package
name.
Due to it being more favorable to install global packages using a
[system package manager](/wiki/linux/package_manager.md) or a
[Python](/wiki/programming_language/python.md) package manager such as
[uv](/wiki/programming_language/python/uv.md) which is able to handle global installations, it may
be useful to migrate to a system package manager.
```sh
pip uninstall <package>
```
### Creating a `requirements.txt` File
To automatically create a `requirements.txt` file for the current project,
navigate to the project directory and run `pipreqs`.
```sh
pipreqs .
```
For [Arch Linux](/wiki/linux/arch-linux.md) systems the process for this is explained in the
[Pacman and AUR entry](/wiki/linux/package_manager/pacman_and_aur.md).