Als je onlangs de fout "extern beheerde omgeving" bent tegengekomen tijdens het installeren van pip-pakketten op Linux, kun je dit als volgt oplossen.

Als je vaak met Python werkt en onlangs bent overgestapt naar Ubuntu 23.04 of Fedora versie 38, is de kans groot dat je kwam de fout "extern beheerde omgeving" tegen bij het installeren van pakketten met de Python-pakketbeheerder, Pip.

Dit zou frustrerend en behoorlijk verrassend kunnen zijn, omdat deze fout nooit zou verschijnen in de oudere versies van Ubuntu, Fedora en andere distributies. Laten we eens kijken wat deze fout precies veroorzaakt en hoe u deze snel kunt oplossen.

Waarom de fout 'extern beheerde omgeving' optreedt

De nieuwste versies van alle Linux-distributies nemen de standaarden over die zijn gedefinieerd in PEP-668. Deze wijzigingen zorgen ervoor dat pip-pakketten niet standaard in een globale context worden geïnstalleerd.

Dit werd geïmplementeerd in een poging om conflicten tussen de pakketbeheerder van de distributie en de pakketbeheertools van Python te voorkomen. Details vindt u in de

officiële PEP-668-documentatie. Als u dit mechanisme wilt terugdraaien of opheffen, kunt u drie benaderingen kiezen.

1. Verwijder het "EXTERN BEHEERDE" bestand

Dit is de eenvoudigste oplossing voor de pip "extern beheerde" fout. Het enige wat u hoeft te doen is naar navigeren /usr/lib/python3.xx en verwijder de EXTERN BEHEERD bestand in de map. Hier zijn de opdrachten om dit te doen:

cd /usr/lib/python3.11
sudo rm EXTERNALLY-MANAGED

Dat is alles wat u hoeft te doen om de fout te herstellen. Als u ervoor kiest dit mechanisme te herstellen, maakt u hetzelfde bestand opnieuw met het aanraakcommando:

sudo touch EXTERNALLY-MANAGED

Nu zou je pakketten naadloos moeten kunnen installeren met pip of pip3.

2. Gebruik virtuele omgevingen om pip-pakketten te installeren

Een andere benadering die u kunt volgen, is gebruiken virtuele omgevingen voor uw Python-project. Virtuele omgevingen zijn een geweldige manier om programmaspecifieke pakketten van het besturingssysteem te isoleren en stellen u ook in staat uw project netjes te organiseren.

Hier ziet u hoe u een virtuele omgeving kunt maken en pakketten met pip kunt installeren:

  1. Creëer eerst de virtuele omgeving met:
    python3 -m venv venv
  2. Bron het activatiebestand in de bin-map met behulp van de source-opdracht:
    source venv/bin/activate

Uw shell-prompt moet worden bijgewerkt met de naam van de virtuele omgeving. Nu kun je alle Python-pakketten installeren die je maar wilt.

Zoals u kunt zien, is de openai Het Python-pakket kon in eerste instantie niet worden geïnstalleerd, maar na het maken en overschakelen naar een virtuele omgeving wordt het feilloos geïnstalleerd.

3. Gebruik pipx om Python-pakketten te installeren

pipx is een hulpprogramma voor het installeren van Python-pakketten in virtuele en geïsoleerde omgevingen. Het automatiseert stappen zoals het creëren van virtuele omgevingen voor elk pakket en het creëren van symbolische links naar de pakketten in het .lokaal/bin zodat u elk pakket te allen tijde vanuit de shell kunt aanroepen.

Door pipx te gebruiken om pakketten te installeren, kunt u de fout "extern beheerde omgeving" vermijden terwijl pakketten in virtuele omgevingen worden geïnstalleerd. Om pipx te gebruiken, installeert u het eerst met de standaard pakketbeheerder van uw distributie.

Over Ubuntu/Debian-derivaten:

sudo apt-get install pipx

Op Arch-gebaseerde systemen:

sudo pacman -S pipx

Op Fedora/CentOS/RHEL:

sudo dnf install pipx

Zodra je pipx hebt geïnstalleerd, gebruik je het net zoals je pip zou gebruiken om pakketten te installeren. Hier is een voorbeeldopdracht:

pipx install openai

Voor meer informatie over pipx kunt u naar de manpagina verwijzen met behulp van het man-commando.

Nu weet u hoe u de "extern beheerde" fout kunt oplossen

Nadat u de fout 'extern beheerde omgeving' heeft verholpen, kunt u doorgaan met het werken aan uw project of het oefenen van algemene Python-programmering. Als je je op dat laatste concentreert, wil je misschien eens kijken naar de verschillende gegamificeerde manieren van leren programmeren waarmee je Python, of welke taal dan ook, veel sneller leert, op een praktische en lonende manier manier.