Jak opravit chybu pip „externally-managed-environment“ v Linuxu

Pokud často pracujete s Pythonem a nedávno jste přešli na Ubuntu 23.04 nebo Fedoru verze 38, je pravděpodobné, že jste narazili na chybu „externally-managed-environment“ při instalaci balíčků pomocí správce balíčků Pythonu, pip.

To by mohlo být frustrující a docela překvapivé, protože tato chyba se nikdy neobjevila ve starších verzích Ubuntu, Fedory a dalších distribucí. Pojďme se dozvědět, co přesně tuto chybu způsobuje a jak ji můžete rychle opravit.

Proč dochází k chybě „externě spravovaného prostředí“.

Nejnovější verze všech distribucí Linuxu přebírají standardy definované v PEP-668. Tyto změny zajišťují, že balíčky pip nebudou standardně instalovány v globálním kontextu.

  10 nejlepších tvůrců pozvánek pro vytvoření dokonalého prvního dojmu

Toto bylo implementováno ve snaze vyhnout se konfliktu mezi správcem balíčků distribuce a nástroji pro správu balíčků Pythonu. Podrobnosti se můžete dozvědět v oficiální dokumentace PEP-668. Pokud chcete tento mechanismus vrátit nebo potlačit, můžete použít tři přístupy.

1. Smažte soubor „EXTERNALLY-MANAGED“.

Toto je nejjednodušší oprava chyby „externě spravované“ pip. Jediné, co musíte udělat, je přejít do /usr/lib/python3.xx a odstranit soubor EXTERNALLY-MANAGED v adresáři. Zde jsou příkazy, jak to provést:

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

To je vše, co musíte udělat, abyste chybu napravili. Pokud se rozhodnete tento mechanismus obnovit, vytvořte stejný soubor znovu pomocí dotykového příkazu:

 sudo touch EXTERNALLY-MANAGED 

Nyní byste měli být schopni bez problémů nainstalovat balíčky pomocí pip nebo pip3.

2. K instalaci balíčků pip použijte virtuální prostředí

Dalším přístupem, který můžete použít, je použití virtuálních prostředí pro váš projekt Python. Virtuální prostředí jsou skvělým způsobem, jak izolovat balíčky specifické pro program od operačního systému a také vám umožňují úhledně organizovat váš projekt.

  iPhone 15 Pro vs. iPhone 14 Pro: Měli byste upgradovat?

Zde je návod, jak vytvořit virtuální prostředí a nainstalovat balíčky pomocí pip:

  • Nejprve vytvořte virtuální prostředí pomocí:
     python3 -m venv venv 
  • Zdroj aktivačního souboru v adresáři bin pomocí příkazu source:
     source venv/bin/activate 
  • Vaše výzva shellu by měla být aktualizována názvem virtuálního prostředí. Nyní budete moci nainstalovat libovolné balíčky Pythonu, které si přejete.

    Jak můžete vidět, balíček openai Python nebylo možné nejprve nainstalovat, ale po vytvoření a přepnutí do virtuálního prostředí se nainstaluje bezchybně.

    3. Použijte pipx k instalaci balíčků Pythonu

    pipx je nástroj pro instalaci balíčků Pythonu ve virtuálních a izolovaných prostředích. Automatizuje kroky, jako je vytváření virtuálních prostředí pro každý balíček a vytváření symbolických odkazů na balíčky ve složce .local/bin, takže můžete každý balíček kdykoli volat z shellu.

      Jak opravit nefunkční gumu GIMP

    Použití pipx k instalaci balíčků vám pomůže vyhnout se chybě „externally-managed-environment“ při instalaci balíčků do virtuálních prostředí. Chcete-li použít pipx, nejprve jej nainstalujte pomocí výchozího správce balíčků vaší distribuce.

    Na derivátech Ubuntu/Debianu:

     sudo apt-get install pipx 

    Na systémech založených na Arch:

     sudo pacman -S pipx 

    Na Fedora/CentOS/RHEL:

     sudo dnf install pipx 

    Jakmile nainstalujete pipx, použijte jej stejně jako pip k instalaci balíčků. Zde je ukázkový příkaz:

     pipx install openai 

    Chcete-li se o pipx dozvědět více, můžete se podívat na jeho manuálovou stránku pomocí příkazu man.

    Nyní víte, jak opravit chybu „externě spravované“.

    Po opravě chyby „externally-managed-environment“ byste měli být schopni pokračovat v práci na svém projektu nebo v procvičování obecného programování v Pythonu. Pokud se zaměřujete na to druhé, možná budete chtít vyzkoušet různé gamifikované způsoby učení programování, které vám pomohou naučit se Python nebo jakýkoli jiný jazyk mnohem rychleji praktickým a přínosným způsobem.