خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه رفع خطای پیپ “Externally-managed-Evironment” در لینوکس

اگر اخیراً هنگام نصب بسته‌های پیپ در لینوکس با خطای «Externally-managed-Environment» مواجه شده‌اید، در اینجا نحوه رفع آن آورده شده است.

اگر اغلب با پایتون کار می‌کنید و اخیراً به اوبونتو 23.04 یا فدورا نسخه 38 رفته‌اید، به احتمال زیاد هنگام نصب بسته‌ها با مدیر بسته پایتون، پیپ، با خطای «محیط مدیریت‌شده خارجی» مواجه شده‌اید.

این می تواند ناامید کننده و کاملاً تعجب آور باشد زیرا این خطا هرگز در نسخه های قدیمی اوبونتو، فدورا و سایر توزیع ها ظاهر نمی شود. بیایید یاد بگیریم که دقیقاً چه چیزی باعث این خطا می شود و چگونه می توانید آن را به سرعت برطرف کنید.

چرا خطای “محیط مدیریت شده خارجی” رخ می دهد؟

خطای مدیریت خارجی pip

آخرین نسخه های تمام توزیع های لینوکس استانداردهای تعریف شده در PEP-668 را اتخاذ می کنند. این تغییرات تضمین می کند که بسته های پیپ به طور پیش فرض در یک زمینه جهانی نصب نمی شوند.

این در تلاشی برای جلوگیری از تضاد بین مدیر بسته توزیع و ابزارهای مدیریت بسته پایتون اجرا شد. شما می توانید در مورد جزئیات در اسناد رسمی PEP-668 اطلاعات کسب کنید. اگر می‌خواهید این مکانیسم را برگردانید یا لغو کنید، می‌توانید از سه روش استفاده کنید.

1. فایل “EXTERNALLY-MANAGED” را حذف کنید

حذف فایل با مدیریت خارجی

این ساده ترین راه حل برای خطای پیپ “مدیریت خارجی” است. تنها کاری که باید انجام دهید این است که به /usr/lib/python3.xx بروید و فایل EXTERNALLY-MANAGED موجود در فهرست را حذف کنید. در اینجا دستوراتی برای انجام این کار وجود دارد:

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

این تمام کاری است که برای رفع خطا باید انجام دهید. اگر تصمیم به بازیابی این مکانیسم دارید، دوباره همان فایل را با دستور لمسی ایجاد کنید:

sudo touch EXTERNALLY-MANAGED

اکنون باید بتوانید بسته ها را به صورت یکپارچه با pip یا pip3 نصب کنید.

مطلب مرتبط:   5 دلیل که SteamOS یک راه خوب برای یادگیری لینوکس است

2. از محیط های مجازی برای نصب بسته های پیپ استفاده کنید

روش دیگری که می توانید در پیش بگیرید استفاده از محیط های مجازی برای پروژه پایتون است. محیط های مجازی راهی عالی برای جداسازی بسته های خاص برنامه از سیستم عامل هستند و همچنین به شما این امکان را می دهند که پروژه خود را به خوبی سازماندهی کنید.

در اینجا نحوه ایجاد یک محیط مجازی و نصب بسته ها با pip آورده شده است:

  1. ابتدا محیط مجازی را با python3 -m venv venv ایجاد کنید
  2. فایل activate را در داخل دایرکتوری bin با استفاده از دستور source: source venv/bin/activate منبع کنید

python3 -m venv venv

source venv/bin/activate

درخواست پوسته شما باید با نام محیط مجازی به روز شود. اکنون می توانید هر بسته پایتونی را که می خواهید نصب کنید.

استفاده از venv خطای مدیریت خارجی را حل می کند

همانطور که می بینید، بسته openai Python در ابتدا قابل نصب نبود اما پس از ایجاد و تغییر به یک محیط مجازی، بدون نقص نصب می شود.

3. از pipx برای نصب بسته های پایتون استفاده کنید

نصب بسته ها با pipx

pipx ابزاری برای نصب بسته های پایتون در محیط های مجازی و ایزوله است. مراحلی مانند ایجاد محیط های مجازی برای هر بسته و ایجاد پیوندهای نمادین به بسته های موجود در پوشه .local/bin را خودکار می کند تا بتوانید هر بسته را از پوسته همیشه فراخوانی کنید.

استفاده از pipx برای نصب بسته‌ها به شما کمک می‌کند از خطای «Externally-managed-Evironment» در هنگام نصب بسته‌ها در محیط‌های مجازی جلوگیری کنید. برای استفاده از pipx، ابتدا آن را با مدیر بسته پیش فرض توزیع خود نصب کنید.

مطلب مرتبط:   چگونه یک سیستم فایل NTFS ویندوز خراب را با اوبونتو رفع کنیم

در مورد مشتقات اوبونتو/دبیان:

sudo apt-get install pipx

در سیستم های مبتنی بر Arch:

sudo pacman -S pipx

در Fedora/CentOS/RHEL:

sudo dnf install pipx

هنگامی که pipx را نصب کردید، از آن درست مانند استفاده از pip برای نصب بسته ها استفاده کنید. در اینجا یک دستور نمونه وجود دارد:

pipx install openai

برای کسب اطلاعات بیشتر در مورد pipx می توانید با استفاده از دستور man به صفحه man آن مراجعه کنید.

اکنون می دانید که چگونه خطای “مدیریت خارجی” را برطرف کنید

پس از رفع خطای “Externally-managed-Evironment”، باید بتوانید به کار بر روی پروژه خود یا تمرین برنامه نویسی عمومی پایتون ادامه دهید. اگر روی دومی تمرکز کرده اید، ممکن است بخواهید روش های مختلف گیمیفی شده برای یادگیری برنامه نویسی را بررسی کنید که به شما کمک می کند پایتون یا هر زبانی را بسیار سریعتر به روشی عملی و مفید یاد بگیرید.