Jeśli ostatnio podczas instalowania pakietów pip w systemie Linux natrafiłeś na błąd „środowisko zarządzane zewnętrznie”, oto jak go naprawić.

Jeśli często pracujesz z Pythonem i niedawno przerzuciłeś się na Ubuntu 23.04 lub Fedorę w wersji 38, prawdopodobnie natknąłem się na błąd „zewnętrznie zarządzanego środowiska” podczas instalowania pakietów za pomocą menedżera pakietów Pythona, pypeć.

Może to być frustrujące i dość zaskakujące, ponieważ ten błąd nigdy nie pojawiałby się w starszych wersjach Ubuntu, Fedory i innych dystrybucjach. Dowiedzmy się, co dokładnie powoduje ten błąd i jak można go szybko naprawić.

Dlaczego pojawia się błąd „środowiska zarządzanego zewnętrznie”.

Najnowsze wersje wszystkich dystrybucji Linuksa przyjmują standardy określone w PEP-668. Zmiany te zapewniają, że pakiety pip nie będą domyślnie instalowane w kontekście globalnym.

Zostało to zaimplementowane, aby uniknąć konfliktu między menedżerem pakietów dystrybucji a narzędziami do zarządzania pakietami w języku Python. O szczegółach można dowiedzieć się w

oficjalna dokumentacja PEP-668. Jeśli chcesz cofnąć lub zastąpić ten mechanizm, możesz zastosować trzy podejścia.

1. Usuń plik „ZARZĄDZANE ZEWNĘTRZNIE”.

Jest to najprostsza poprawka błędu pip „zarządzanego zewnętrznie”. Wszystko, co musisz zrobić, to przejść do /usr/lib/python3.xx i usuń ZARZĄDZANE ZEWNĘTRZNIE plik w katalogu. Oto polecenia, które to umożliwiają:

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

To wszystko, co musisz zrobić, aby naprawić błąd. Jeśli zdecydujesz się przywrócić ten mechanizm, utwórz ponownie ten sam plik za pomocą polecenie dotykowe:

sudo touch EXTERNALLY-MANAGED

Teraz powinieneś móc bezproblemowo instalować pakiety za pomocą pip lub pip3.

2. Użyj środowisk wirtualnych, aby zainstalować pakiety pip

Innym podejściem, które możesz zastosować, jest użycie środowiska wirtualne dla Twojego projektu w języku Python. Środowiska wirtualne to świetny sposób na odizolowanie pakietów specyficznych dla programu od systemu operacyjnego, a także pozwalają na uporządkowaną organizację projektu.

Oto jak utworzyć środowisko wirtualne i zainstalować pakiety za pomocą pip:

  1. Najpierw utwórz środowisko wirtualne za pomocą:
    python3 -m venv venv
  2. Źródło pliku aktywacyjnego w katalogu bin za pomocą polecenia source:
    source venv/bin/activate

Monit powłoki powinien zostać zaktualizowany o nazwę środowiska wirtualnego. Teraz będziesz mógł zainstalować dowolne pakiety Pythona.

Jak widać, otwórz Pakiet Pythona nie mógł zostać zainstalowany na początku, ale po utworzeniu i przełączeniu się do środowiska wirtualnego został zainstalowany bezbłędnie.

3. Użyj pipx, aby zainstalować pakiety Pythona

pipx to narzędzie do instalowania pakietów Pythona w środowiskach wirtualnych i izolowanych. Automatyzuje takie kroki, jak tworzenie środowisk wirtualnych dla każdego pakietu i tworzenie dowiązań symbolicznych do pakietów w pliku .lokalny/bin folder, dzięki czemu możesz przez cały czas wywoływać każdy pakiet z powłoki.

Używanie pipx do instalowania pakietów pomaga uniknąć błędu „zewnętrznie zarządzanego środowiska” podczas instalowania pakietów w środowiskach wirtualnych. Aby użyć pipx, najpierw zainstaluj go z domyślnym menedżerem pakietów swojej dystrybucji.

W pochodnych Ubuntu/Debian:

sudo apt-get install pipx

W systemach opartych na Arch:

sudo pacman -S pipx

W Fedorze/CentOS/RHEL:

sudo dnf install pipx

Po zainstalowaniu pipx użyj go tak, jak używasz pip do instalowania pakietów. Oto przykładowe polecenie:

pipx install openai

Aby dowiedzieć się więcej o pipx, możesz odwołać się do jego strony podręcznika za pomocą polecenia man.

Teraz wiesz, jak naprawić błąd „zarządzany zewnętrznie”.

Po naprawieniu błędu „zewnętrznie zarządzanego środowiska” powinieneś móc kontynuować pracę nad projektem lub ćwiczyć ogólne programowanie w Pythonie. Jeśli koncentrujesz się na tym drugim, możesz wypróbować różne sposoby uczenia się z wykorzystaniem gier programowanie, które pomoże Ci nauczyć się Pythona lub dowolnego innego języka znacznie szybciej, w sposób praktyczny i satysfakcjonujący sposób.