Sådan rettes pip “eksternt-styret-miljø”-fejlen på Linux

Hvis du ofte arbejder med Python og for nylig skiftede til Ubuntu 23.04 eller Fedora version 38, er chancerne for, at du stødte på fejlen “eksternt-administreret-miljø”, når du installerede pakker med Python-pakkehåndteringen, pip.

Dette kunne være frustrerende og ret overraskende, da denne fejl aldrig ville dukke op i de ældre versioner af Ubuntu, Fedora og andre distributioner. Lad os lære, hvad der præcist forårsager denne fejl, og hvordan du kan rette den hurtigt.

Hvorfor opstår fejlen “eksternt administreret miljø”.

De seneste versioner af alle Linux-distributioner overtager standarderne defineret i PEP-668. Disse ændringer sikrer, at pip-pakker ikke vil blive installeret i en global kontekst som standard.

  Sådan kopieres filer ved hjælp af "install"-kommandoen på Linux

Dette blev implementeret i et forsøg på at undgå konflikt mellem distributionens pakkehåndtering og Python pakkehåndteringsværktøjer. Du kan lære om detaljerne i officiel PEP-668 dokumentation. Hvis du ønsker at vende tilbage eller tilsidesætte denne mekanisme, kan du tage tre tilgange.

1. Slet filen “EKSTERNT MANAGED”.

Dette er den enkleste rettelse til pip-fejlen “eksternt styret”. Alt du skal gøre er at navigere til /usr/lib/python3.xx og slette den EKSTERNT ADMINISTRerede fil i mappen. Her er kommandoerne til at gøre det:

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

Det er alt, du skal gøre for at rette fejlen. Hvis du vælger at gendanne denne mekanisme, skal du oprette den samme fil igen med berøringskommandoen:

 sudo touch EXTERNALLY-MANAGED 

Nu skulle du være i stand til at installere pakker problemfrit med pip eller pip3.

2. Brug virtuelle miljøer til at installere pip-pakker

En anden tilgang, du kan tage, er at bruge virtuelle miljøer til dit Python-projekt. Virtuelle miljøer er en fantastisk måde at isolere programspecifikke pakker fra operativsystemet og giver dig også mulighed for pænt at organisere dit projekt.

  Sådan installeres og bruges TeamViewer på Linux

Sådan opretter du et virtuelt miljø og installerer pakker med pip:

  • Først skal du oprette det virtuelle miljø med:
     python3 -m venv venv 
  • Kilde aktiveringsfilen inde i bin-mappen ved hjælp af kildekommandoen:
     source venv/bin/activate 
  • Din shell-prompt skal opdateres med navnet på det virtuelle miljø. Nu vil du være i stand til at installere alle Python-pakker, du ønsker.

    Som du kan se, kunne openai Python-pakken ikke installeres i starten, men efter oprettelse og skift til et virtuelt miljø, bliver den installeret fejlfrit.

    3. Brug pipx til at installere Python-pakker

    pipx er et værktøj til at installere Python-pakker i virtuelle og isolerede miljøer. Det automatiserer trin som at skabe virtuelle miljøer for hver pakke og skabe symbolske links til pakkerne i .local/bin-mappen, så du kan kalde hver pakke fra shellen til enhver tid.

      Sådan sikkerhedskopieres KDE Plasma 5-skrivebordsindstillinger på Linux

    Brug af pipx til at installere pakker hjælper dig med at undgå fejlen “eksternt administreret miljø”, da det installerer pakker i virtuelle miljøer. For at bruge pipx skal du først installere det med din distributions standardpakkehåndtering.

    På Ubuntu/Debian-derivater:

     sudo apt-get install pipx 

    På Arch-baserede systemer:

     sudo pacman -S pipx 

    På Fedora/CentOS/RHEL:

     sudo dnf install pipx 

    Når du har installeret pipx, skal du bruge det ligesom du ville bruge pip til at installere pakker. Her er en eksempelkommando:

     pipx install openai 

    For at lære mere om pipx, kan du henvise til dens man-side ved at bruge man-kommandoen.

    Nu ved du, hvordan du retter den “eksternt administrerede” fejl

    Efter at have rettet fejlen “eksternt-styret miljø”, bør du være i stand til at fortsætte med at arbejde på dit projekt eller øve generel Python-programmering. Hvis du er fokuseret på sidstnævnte, vil du måske tjekke de forskellige gamified måder at lære programmering på, som vil hjælpe dig med at lære Python eller et hvilket som helst sprog meget hurtigere på en praktisk og givende måde.