وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

رفع No matching distribution در pip؛ چرا پکیج پایتون نصب نمی‌شود؟

تشخیص خطای No matching distribution با بررسی نسخه Python و pip، نام و نسخه بسته، مخزن و سازگاری سیستم روی هاست پایتون.

انتشار:
توسط تیم فنی نت‌آرام
۶ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله رفع No matching distribution در pip؛ چرا پکیج پایتون نصب نمی‌شود؟ در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
هنگام نصب یک بسته پایتون، pip پیام No matching distribution found می‌دهد. این پیام یعنی pip در منابعی که برای آن تنظیم شده‌اند، نسخه قابل نصب و سازگار با شرایط فعلی پیدا نکرده است. ممکن است نام بسته اشتباه باشد، نسخه خواسته‌شده وجود نداشته باشد، نسخه پایتون با آن بسته سازگار نباشد یا pip اصلاً نتوانسته باشد فهرست بسته‌ها را دریافت کند.
پاک‌کردن همه محیط یا نصب نسخه‌های تصادفی پایتون راه تشخیص نیست. در این آموزش یک بسته نمونه را جایگزین نام واقعی می‌کنیم و از پیام خطا تا آزمایش نصب پیش می‌رویم. دستورها برای ترمینال لینوکس و هاست پایتون با محیط مجازی‌اند؛ روی حساب اشتراکی نیاز به دسترسی root ندارید.

۱. کل خطا را بخوانید، نه فقط آخرین خط

پیام کامل ممکن است شبیه این باشد:
کد / دستورERROR: Could not find a version that satisfies the requirement example-package==1.2.3 ERROR: No matching distribution found for example-package==1.2.3
example-package و شماره نسخه در این مثال ساختگی‌اند. نام واقعی بسته، نسخه خواسته‌شده و چند خط قبل از خطا را یادداشت کنید. اگر بالاتر عباراتی درباره اتصال، certificate verify failed یا مهلت انتظار می‌بینید، مشکل شبکه یا اعتبار گواهی ممکن است مانع دسترسی به فهرست نسخه‌ها شده باشد. اگر pip نسخه‌هایی را به دلیل Requires-Python نادیده گرفته، اختلاف نسخه پایتون سرنخ مهمی است.
در گزارش عمومی، رمزهای احتمالی URL مخزن خصوصی، توکن و اطلاعات حساب را حذف کنید. از گزینه خاموش‌کننده بررسی TLS یا یک مخزن ناشناس برای ردشدن از خطا استفاده نکنید؛ ابتدا علت دسترسی امن را پیدا کنید.

۲. نسخه و محیط واقعی برنامه را مشخص کنید

در پنل برنامه پایتون، نسخه انتخاب‌شده، Application root و فرمان ورود به محیط مجازی همان برنامه را پیدا کنید. در Terminal یا SSH، فرمان اختصاصی را اجرا کنید و سپس بنویسید:
کد / دستورpython --version python -m pip --version python -c 'import sys; print(sys.executable); print(sys.prefix); print(sys.base_prefix)'
فرمان اول نسخه پایتون و دومی نسخه و محل pip وابسته به همان پایتون را نشان می‌دهد. در فرمان سوم، تفاوت معمول sys.prefix و sys.base_prefix نشانه‌ای از فعال‌بودن محیط مجازی است. اگر دستور python پیدا نمی‌شود یا مسیر با محیط برنامه نمی‌خواند، فرمان محیط اختصاصی را از پنل دوباره بگیرید. اجرای pip بدون توجه به اینکه مربوط به کدام Python است می‌تواند شما را به محیط اشتباه ببرد.
اگر پروژه از requirements.txt استفاده می‌کند، به پوشه واقعی آن بروید:
کد / دستورcd ~/myproject pwd ls -la requirements.txt
مسیر ~/myproject نمونه است. اگر فایل پیدا نشد، مسیر صحیح پروژه را مشخص کنید. پیش از ویرایش نیازمندی‌ها از نسخه فعلی فایل و محیط قابل بازگشت نگه دارید.

۳. نام و نسخه بسته را تطبیق دهید

نام نصب یک توزیع لزوماً مانند نام import در کد نیست. برای مثال توزیع Pillow با نام PIL در کد استفاده می‌شود. نام درست و نسخه موردنیاز را از مستندات رسمی بسته و فهرست تأییدشده پروژه بگیرید. به اعداد نسخه و علامت‌های ==، >= و < در فایل نیازمندی‌ها دقت کنید؛ == یک نسخه مشخص می‌خواهد و تایپ اشتباه یک رقم می‌تواند نصب را متوقف کند.
در نسخه‌هایی از pip که فرمان index versions را دارند، برای یک بسته عمومی و شناخته‌شده می‌توانید نسخه‌های قابل مشاهده را ببینید:
کد / دستورpython -m pip index versions Pillow
این خروجی به مخزن و نسخه pip فعلی وابسته است و الزاماً همه نسخه‌های سازگار با پروژه شما را تضمین نمی‌کند. اگر فرمان در نسخه pip شما موجود نیست، صفحه رسمی بسته را از مرورگر و منبع مورد اعتماد بررسی کنید. برای بسته خصوصی، نام مخزن و مجوز دسترسی آن را بدون نمایش رمز بررسی کنید؛ بسته خصوصی لزوماً در فهرست عمومی PyPI نیست.

۴. سازگاری نسخه پایتون را پیدا کنید

در صفحه رسمی نسخه بسته، بخش سازگاری پایتون یا مقدار Requires-Python را بخوانید. فرض کنید بسته‌ای طبق مستنداتش به Python 3.11 یا جدیدتر نیاز دارد اما برنامه در پنل با 3.9 ساخته شده است؛ نصب همان نسخه بسته در محیط 3.9 موفق نخواهد شد. ابتدا بررسی کنید آیا نسخه قدیمی‌تر پشتیبانی‌شده و سازگار با خود پروژه وجود دارد یا برنامه می‌تواند پس از آزمون با نسخه جدیدتر پایتون اجرا شود.
تغییر نسخه پایتون در پنل می‌تواند باعث انتخاب محیط مجازی دیگری شود. پیش از تغییر، نسخه سالم، فهرست وابستگی‌ها و امکان بازگشت را نگه دارید. تغییر را ابتدا روی نسخه آزمایشی انجام دهید؛ سپس وابستگی‌ها را در محیط جدید نصب و تست‌های پروژه را اجرا کنید. صرف تغییر شماره نسخه در پنل تضمین سازگاری Django، کتابخانه‌ها و کد نیست.
ممکن است نسخه پایتون درست باشد، ولی بسته برای معماری یا سیستم فعلی فایل آماده مناسب نداشته باشد و نصب از منبع به ابزار ساخت نیاز پیدا کند. در هاست اشتراکی در دسترس بودن ابزارهای سیستمی محدود است. متن دقیق خطا و پشتیبانی رسمی بسته را بررسی کنید؛ دستورهای نصب سیستمی یا کامپایلر را بدون مجوز روی هاست اجرا نکنید.

۵. اگر مشکل از دسترسی به مخزن است

هنگامی که قبل از خطای نهایی پیام اتصال یا گواهی دیده‌اید، با یک نشانی عمومی و بی‌خطر، اتصال HTTPS را از همان محیط بررسی کنید:
کد / دستورcurl -I https://pypi.org/simple/
پاسخ موفق به این نشانی فقط نشان می‌دهد این درخواست مشخص از آن محیط رسیده است؛ دسترسی به یک مخزن خصوصی یا فایل دیگری را تضمین نمی‌کند. خطای حل نام، مهلت انتظار و خطای گواهی را جداگانه یادداشت کنید. اگر سرویس از مخزن خصوصی یا آینه استفاده می‌کند، نشانی تنظیم‌شده و مجوز دسترسی را با مدیر سرویس بررسی کنید. خروجی تنظیمات pip ممکن است شامل آدرس محرمانه یا توکن باشد؛ آن را بی‌پالایش ارسال نکنید.

۶. پس از اصلاح، نصب و اجرای واقعی را امتحان کنید

در محیط آزمایشی مناسب و پس از تأیید نام، نسخه و منبع، دوباره وابستگی‌های خود پروژه را نصب کنید:
کد / دستورpython -m pip install -r requirements.txt python -m pip check
فرمان اول بسته‌های فهرست را نصب می‌کند و می‌تواند محیط را تغییر دهد؛ روی تنها نسخه سالم پروژه زنده بدون امکان بازگشت اجرا نشود. فرمان دوم ناسازگاری‌های شناخته‌شده بین بسته‌های نصب‌شده را گزارش می‌کند، اما تست کامل برنامه نیست. سپس import ماژول موردنیاز و آزمون‌های واقعی پروژه را اجرا کنید. نام import ممکن است با نام نصب متفاوت باشد؛ راهنمای رفع ModuleNotFoundError این تفاوت و انتخاب محیط را توضیح می‌دهد.
پس از انتقال نسخه تأییدشده، برنامه را از پنل همان سرویس Restart و مسیر واقعی آن را آزمایش کنید. اگر بسته جدیدی در خطا ظاهر شد، آن را جداگانه بررسی کنید. اطلاعات سرویس را در صفحه هاست پایتون نت‌آرام و راهنمای عمومی تشخیص خطای نصب را در مستندات PyPI بخوانید.
اشتراک‌گذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام