محدودیت دسترسی به PyPI می‌تواند فرایند توسعه، دریافت وابستگی‌ها یا استفاده از ابزارهای مرتبط را مختل کند. در این راهنما تنظیم شکن، دامنه‌های لازم و روش آزمایش تحریم شکن برای PyPI را با نمونه عملی توضیح می‌دهیم.

اگر هنگام نصب کتابخانه‌های پایتون با دستور pip install با خطای اتصال، توقف دانلود یا مشکل دسترسی به مخزن پکیج‌ها روبه‌رو شده‌اید، ممکن است بخشی از مشکل به تنظیمات شبکه یا DNS مربوط باشد. این مسئله هنگام راه‌اندازی پروژه‌های جدید، نصب وابستگی‌های برنامه یا آماده‌سازی محیط توسعه می‌تواند وقت‌گیر شود.

تحریم شکن برای PyPI راهکاری است که می‌توانید برای بررسی مشکلات احتمالی دسترسی مبتنی بر DNS امتحان کنید. PyPI مخزن عمومی پکیج‌های پایتون است و ابزار pip معمولاً برای دریافت اطلاعات و فایل‌های کتابخانه‌ها از آن استفاده می‌کند. اگر محدودیت یا اختلال DNS مانع دسترسی به دامنه‌های موردنیاز شده باشد، تنظیم DNS شکن ممکن است به برقراری ارتباط کمک کند؛ البته نتیجه به نوع محدودیت و وضعیت مقصد بستگی دارد.

تحریم شکن برای PyPI

PyPI چیست و چه کاربردی در برنامه‌نویسی پایتون دارد؟

PyPI مخفف Python Package Index است و به‌عنوان مخزن عمومی پکیج‌های پایتون شناخته می‌شود. توسعه‌دهندگان می‌توانند از طریق این مخزن، کتابخانه‌ها و ابزارهای موردنیاز پروژه‌های خود را پیدا و دریافت کنند.

برای مثال، کتابخانه‌هایی مانند requests برای ارسال درخواست‌های HTTP، numpy برای محاسبات عددی و pandas برای تحلیل داده‌ها در پروژه‌های مختلف استفاده می‌شوند. بسیاری از این کتابخانه‌ها از طریق PyPI قابل نصب هستند.

ابزار pip نیز وظیفه مدیریت نصب پکیج‌ها و وابستگی‌های پایتون را بر عهده دارد. وقتی دستور زیر را اجرا می‌کنید، pip تلاش می‌کند نسخه موردنظر کتابخانه را پیدا کند و فایل‌های لازم را دریافت کند:

python -m pip install requests

در این فرایند، ممکن است علاوه بر کتابخانه اصلی، چند وابستگی دیگر نیز نصب شوند. اگر دسترسی به مخزن یا یکی از منابع موردنیاز برقرار نباشد، فرایند نصب ممکن است متوقف شود.

نکته مهم این است که PyPI، pip و Python یک چیز نیستند. Python زبان برنامه‌نویسی و محیط اجرای کد است؛ pip ابزار نصب و مدیریت پکیج‌هاست و PyPI مخزنی است که پکیج‌ها از آن دریافت می‌شوند. شناخت این تفاوت به تشخیص دقیق‌تر خطاها کمک می‌کند.

چرا دسترسی به PyPI ممکن است با مشکل مواجه شود؟

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

مهم‌ترین علت‌های احتمالی عبارت‌اند از:

  • اختلال یا محدودیت DNS: سیستم نمی‌تواند دامنه‌ای مانند pypi.org را به‌درستی شناسایی کند.

  • مشکل اتصال شبکه: ارتباط با مخزن برقرار نمی‌شود یا هنگام دریافت فایل قطع می‌شود.

  • محدودیت دسترسی به منبع: ممکن است دسترسی به یک دامنه یا منبع دانلود در شبکه فعلی با مشکل روبه‌رو باشد.

  • تنظیمات اشتباه pip: ابزار pip ممکن است به‌جای مخزن عمومی از یک آدرس سفارشی یا مخزن خصوصی استفاده کند.

  • مشکل گواهی SSL یا TLS: ارتباط امن به دلیل گواهی نامعتبر، قدیمی بودن نرم‌افزار یا تنظیمات شبکه برقرار نمی‌شود.

  • ناسازگاری نسخه‌ها: نسخه پایتون، سیستم‌عامل یا معماری دستگاه ممکن است با نسخه موردنیاز یک پکیج سازگار نباشد.

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

  • نیاز به احراز هویت: بعضی از پکیج‌ها در مخازن خصوصی قرار دارند و فقط کاربران مجاز می‌توانند آن‌ها را دریافت کنند.

بنابراین، قبل از تغییر تنظیمات سیستم، باید مشخص کنید خطا در کدام مرحله رخ می‌دهد. اگر مشکل به شناسایی دامنه یا برقراری اتصال مربوط باشد، بررسی DNS منطقی است؛ اما اگر خطا از ناسازگاری نسخه یا احراز هویت ناشی شود، باید علت اصلی را جداگانه بررسی کنید.

تحریم شکن برای PyPI چگونه به دسترسی بهتر کمک می‌کند؟

DNS در فرایند برقراری ارتباط با سرویس‌های اینترنتی نقش مهمی دارد. این سامانه نام دامنه را به اطلاعات شبکه‌ای موردنیاز برای پیدا کردن مقصد تبدیل می‌کند.

برای مثال، هنگامی که pip می‌خواهد به مخزن PyPI متصل شود، سیستم باید بتواند نام دامنه موردنظر را شناسایی کند. اگر اختلال یا محدودیت در سطح DNS مانع این فرایند شود، استفاده از یک DNS دیگر ممکن است به حل مشکل کمک کند.

سرویس شکن برای کمک به دسترسی به برخی دامنه‌های محدودشده طراحی شده است. بنابراین، اگر مشکل نصب کتابخانه‌های پایتون ناشی از محدودیت DNS در دامنه‌های تحت پوشش این سرویس باشد، امتحان کردن DNS شکن می‌تواند یکی از مراحل عیب‌یابی باشد.

بااین‌حال، باید به چند نکته توجه کنید:

  • DNS شکن همه خطاهای pip را برطرف نمی‌کند.

  • تنظیم DNS لزوماً IP عمومی شما را تغییر نمی‌دهد.

  • این روش جایگزین کامل VPN یا پراکسی نیست.

  • دسترسی به یک دامنه به معنی دسترسی قطعی به همه منابع وابسته به آن نیست.

  • اگر خطا به مجوز دسترسی، گواهی SSL، نسخه پایتون یا سازگاری پکیج مربوط باشد، تغییر DNS ممکن است تأثیری نداشته باشد.

بهترین روش این است که ابتدا اتصال به مخزن را بررسی کنید، سپس DNS را در صورت نیاز تنظیم کنید و در نهایت همان دستور نصب را دوباره اجرا کنید تا نتیجه تغییر مشخص شود.

آموزش بررسی و رفع مشکل دسترسی به PyPI

مرحله اول: بررسی نسخه پایتون و pip

ابتدا مطمئن شوید پایتون و pip روی سیستم شما نصب هستند و از همان نسخه‌ای استفاده می‌کنید که برای پروژه در نظر گرفته‌اید.

برای بررسی نسخه پایتون، دستور زیر را اجرا کنید:

python --version

سپس نسخه pip را بررسی کنید:

python -m pip --version

در بعضی از سیستم‌های ویندوز، ممکن است لازم باشد از دستور py استفاده کنید:

py -m pip --version

اگر چند نسخه پایتون روی سیستم نصب کرده‌اید، اجرای pip به‌تنهایی ممکن است به نسخه دیگری اشاره کند. استفاده از python -m pip کمک می‌کند pip از طریق همان مفسر پایتونی اجرا شود که مشخص کرده‌اید.

مرحله دوم: بررسی آدرس مخزن پکیج‌ها

مخزن پیش‌فرض pip معمولاً از آدرس زیر استفاده می‌کند:

https://pypi.org/simple

برای مشاهده تنظیمات فعلی pip، دستور زیر را اجرا کنید:

python -m pip config list

همچنین می‌توانید تنظیمات و فایل‌های پیکربندی قابل شناسایی را بررسی کنید:

python -m pip config debug

اگر قبلاً مخزن دیگری تنظیم کرده‌اید، بررسی کنید که آیا این تغییر عمدی بوده است یا خیر. برخی شرکت‌ها و پروژه‌ها از مخازن خصوصی استفاده می‌کنند و تغییر آن‌ها ممکن است باعث شود پکیج‌های داخلی قابل دریافت نباشند.

برای آزمایش یک نصب از مخزن عمومی PyPI، می‌توانید از دستور زیر استفاده کنید:

python -m pip install requests --index-url https://pypi.org/simple

این دستور فقط برای همان اجرا، آدرس مخزن را مشخص می‌کند. اگر پروژه شما به مخزن خصوصی نیاز دارد، پیش از تغییر منبع دریافت پکیج‌ها، تنظیمات پروژه را بررسی کنید.

مرحله سوم: تنظیم DNS شکن

اگر بررسی‌ها نشان می‌دهند مشکل احتمالاً به DNS مربوط است، می‌توانید DNS شکن را روی سیستم خود تنظیم کنید.

آدرس‌های DNS سرویس شکن به شرح زیر هستند:

  • شکن رایگان: DNS اول 178.22.122.100 و DNS دوم 185.51.200.2

  • شکن حرفه‌ای: DNS اول 178.22.122.101 و DNS دوم 185.51.200.1

برای استفاده از سرویس حرفه‌ای، وضعیت سرویس و ثبت IP را از طریق پنل شکن بررسی کنید.

این آدرس‌ها باید در بخش تنظیم DNS شبکه وارد شوند، نه در دستور نصب pip یا به‌عنوان آدرس مخزن PyPI.

روش تنظیم DNS به سیستم‌عامل شما بستگی دارد. برای جلوگیری از تکرار آموزش‌های دستگاه‌محور در این صفحه، راهنمای نصب و تنظیم متناسب با سیستم خود را انتخاب کنید:

مرحله چهارم: آزمایش اتصال به PyPI

پس از اعمال تنظیمات، ترمینال جدیدی باز کنید و دوباره اتصال را بررسی کنید. برای مثال، دستور زیر تلاش می‌کند اطلاعات یک پکیج را از مخزن دریافت کند:

python -m pip index versions requests

این دستور در نسخه‌های جدید pip برای مشاهده نسخه‌های موجود پکیج کاربرد دارد. اگر نسخه pip شما از این دستور پشتیبانی نمی‌کند، می‌توانید مستقیماً یک پکیج ساده را نصب یا وضعیت اتصال را با یک درخواست HTTPS بررسی کنید.

برای مشاهده جزئیات بیشتر از فرایند نصب، دستور زیر را اجرا کنید:

python -m pip install requests -v

گزینه -v اطلاعات بیشتری درباره فرایند نصب نمایش می‌دهد و می‌تواند در تشخیص مرحله‌ای که خطا در آن رخ داده است، کمک کند.

اگر نصب با موفقیت انجام شد، احتمالاً مشکل مربوط به مسیر ارتباطی یا تنظیمات قبلی بوده است. اگر خطا باقی ماند، متن کامل آن را بررسی کنید؛ زیرا تغییر DNS به‌تنهایی برای همه مشکلات شبکه یا نصب کافی نیست.

خطاهای رایج هنگام نصب پکیج‌های پایتون از PyPI

پیام خطای pip معمولاً سرنخ مهمی درباره علت مشکل ارائه می‌دهد. به‌جای اینکه همه خطاها را به تحریم نسبت دهید، متن پیام و مرحله‌ای را که نصب در آن متوقف شده است بررسی کنید.

خطا یا پیام علت احتمالی راهکار پیشنهادی
Temporary failure in name resolution اختلال موقت در شناسایی نام دامنه از طریق DNS اتصال اینترنت، تنظیمات DNS و امکان دسترسی به مخزن پکیج‌ها را بررسی کنید.
Name or service not known نام دامنه شناسایی نشده یا آدرس میزبان اشتباه است. آدرس مخزن، نام میزبان و پاسخ DNS را بررسی کنید.
Connection timed out مقصد در زمان تعیین‌شده پاسخی نداده است. اتصال شبکه، DNS، تنظیمات پراکسی و دسترسی به مخزن را بررسی کنید.
Connection refused اتصال به مقصد یا پورت موردنظر رد شده است. آدرس مقصد، پورت، تنظیمات پراکسی و محدودیت‌های شبکه را بررسی کنید.
Could not fetch URL pip نتوانسته اطلاعات موردنیاز را از آدرس مشخص‌شده دریافت کند. جزئیات خطای همراه پیام، اتصال شبکه، آدرس مخزن و گواهی HTTPS را بررسی کنید.
CERTIFICATE_VERIFY_FAILED اعتبارسنجی گواهی SSL/TLS با مشکل مواجه شده است. ساعت سیستم، گواهی‌های معتبر و نسخه پایتون و pip را بررسی کنید.
No matching distribution found نسخه سازگار پکیج پیدا نشده یا فهرست نسخه‌های قابل دسترس کامل نیست. نام پکیج، نسخه پایتون، سیستم‌عامل و جزئیات پیام‌های قبلی را بررسی کنید.
Permission denied مجوز لازم برای نوشتن فایل یا نصب پکیج وجود ندارد. محیط مجازی پایتون و مجوزهای مسیر نصب را بررسی کنید.
ModuleNotFoundError ماژول موردنظر در محیط پایتونی که برنامه با آن اجرا می‌شود پیدا نشده است. محیط فعال، مفسر پایتون و نصب بودن پکیج در همان محیط را بررسی کنید.
HTTP 401 / HTTP 403 احراز هویت انجام نشده یا دسترسی به منبع مجاز نیست. اطلاعات ورود، توکن دسترسی و مجوزهای مخزن خصوصی را بررسی کنید.
نکته: اگر نصب پکیج‌های پایتون با خطاهای اتصال یا DNS متوقف می‌شود، ابتدا متن کامل خطا و دسترسی به مخزن را بررسی کنید. برای تشخیص دقیق مشکل، پیام‌های قبل از خطای نهایی نیز اهمیت دارند.

یک نکته مهم درباره خطای No matching distribution found این است که این پیام همیشه به معنی نبودن پکیج در PyPI نیست. ممکن است نسخه موردنیاز با نسخه پایتون یا سیستم‌عامل شما سازگار نباشد یا pip نتوانسته باشد اطلاعات مخزن را دریافت کند. برای تشخیص دقیق‌تر، جزئیات خطا را با گزینه -v یا در صورت نیاز -vvv مشاهده کنید. مستندات رسمی PyPI نیز توصیه می‌کنند در مواجهه با خطاهای دریافت URL و گواهی، جزئیات ارتباط و سازگاری TLS بررسی شود.

رفع خطای DNS هنگام اجرای pip

اگر با خطای شناسایی دامنه مواجه می‌شوید، ابتدا آدرس مخزن را بررسی کنید. سپس می‌توانید از ابزارهای تشخیص DNS استفاده کنید.

در ویندوز:

nslookup pypi.org
nslookup files.pythonhosted.org

در مک و لینوکس نیز در صورت نصب بودن ابزار dig می‌توانید اجرا کنید:

dig pypi.org
dig files.pythonhosted.org

دامنه pypi.org برای دسترسی به صفحات و اطلاعات مخزن و دامنه files.pythonhosted.org برای بخشی از فایل‌های توزیع‌شده پکیج‌ها استفاده می‌شود. بنابراین ممکن است صفحه مخزن قابل دسترسی باشد، اما دانلود فایل یک کتابخانه همچنان با مشکل مواجه شود.

اگر پاسخ DNS دریافت نمی‌شود، تنظیمات شبکه و DNS را بررسی کنید. اگر نام دامنه به‌درستی شناسایی می‌شود اما اتصال برقرار نیست، باید عوامل دیگری مانند پراکسی، محدودیت شبکه یا خطای ارتباط امن را نیز در نظر بگیرید.

رفع خطای SSL و TLS در PyPI

اگر پیام خطا به گواهی SSL یا TLS مربوط است، صرفاً تغییر DNS را راه‌حل قطعی در نظر نگیرید. pip برای ارتباط HTTPS از اعتبارسنجی گواهی استفاده می‌کند تا ارتباط با مقصد امن باقی بماند.

در این شرایط، ساعت و تاریخ سیستم، نسخه پایتون و pip و وضعیت گواهی‌های معتبر را بررسی کنید. در شبکه‌های سازمانی نیز ممکن است پراکسی یا تجهیزات امنیتی روی ارتباط HTTPS تأثیر بگذارند.

از غیرفعال کردن اعتبارسنجی گواهی یا افزودن بی‌دلیل دامنه به فهرست میزبان‌های مورداعتماد خودداری کنید؛ چنین تغییراتی می‌توانند امنیت دریافت پکیج‌ها را کاهش دهند. برای راهنمای دقیق‌تر می‌توانید مستندات رسمی رفع خطاهای PyPI و گواهی‌های HTTPS در pip را مطالعه کنید.

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

در پروژه‌های پایتون معمولاً از محیط مجازی یا Virtual Environment استفاده می‌شود تا کتابخانه‌های هر پروژه از سایر پروژه‌ها جدا بمانند. این روش به‌خودی‌خود مشکل دسترسی به PyPI را برطرف نمی‌کند، اما کمک می‌کند وابستگی‌ها و نسخه‌های موردنیاز هر پروژه مستقل مدیریت شوند.

برای ایجاد محیط مجازی می‌توانید دستور زیر را اجرا کنید:

python -m venv .venv

سپس محیط مجازی را فعال کنید.

در ویندوز با PowerShell:

.\.venv\Scripts\Activate.ps1

در مک و لینوکس:

source .venv/bin/activate

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

python -m pip install requests

اگر DNS شکن را در سطح سیستم‌عامل تنظیم کرده باشید، برنامه‌های داخل محیط مجازی نیز معمولاً از تنظیمات شبکه سیستم استفاده می‌کنند؛ زیرا محیط مجازی پایتون به‌تنهایی یک شبکه مستقل ایجاد نمی‌کند.

بااین‌حال، اگر در یک کانتینر، ماشین مجازی یا محیط توسعه راه دور کار می‌کنید، تنظیمات شبکه همان محیط را هم بررسی کنید. برای مثال، تغییر DNS لپ‌تاپ لزوماً تنظیمات DNS کانتینر Docker یا سرور دوردست را تغییر نمی‌دهد.

اگر نصب پکیج در محیط مجازی شکست خورد، ابتدا مطمئن شوید همان محیط فعال است و دستور python -m pip --version مسیر pip مورد استفاده را نشان می‌دهد. سپس خطای اتصال را جداگانه بررسی کنید.

نصب وابستگی‌های پروژه از فایل requirements.txt

در پروژه‌های پایتون، فهرست کتابخانه‌های موردنیاز معمولاً در فایلی به نام requirements.txt ذخیره می‌شود. این فایل به توسعه‌دهنده کمک می‌کند وابستگی‌های پروژه را در یک محیط جدید نصب کند.

برای نصب وابستگی‌ها از این فایل، دستور زیر را اجرا کنید:

python -m pip install -r requirements.txt

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

برای عیب‌یابی بهتر:

  1. پیام خطا و نام پکیجی را که نصب آن متوقف شده است یادداشت کنید.

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

  3. نسخه پایتون و نسخه‌های تعیین‌شده در فایل requirements.txt را بررسی کنید.

  4. اگر از مخزن خصوصی استفاده می‌کنید، تنظیمات دسترسی و احراز هویت آن را بررسی کنید.

  5. پس از اصلاح اتصال یا تنظیمات، نصب وابستگی‌ها را دوباره انجام دهید.

برای نمونه، اگر خطا مربوط به numpy باشد، می‌توانید آن را جداگانه آزمایش کنید:

python -m pip install numpy -v

البته اگر پروژه به نسخه مشخصی وابسته است، همان نسخه تعیین‌شده در فایل وابستگی‌ها را آزمایش کنید و بدون بررسی سازگاری، نسخه‌ها را تغییر ندهید.

مستندات pip توضیح می‌دهد که این ابزار می‌تواند وابستگی‌ها را از مخزن اصلی، منابع اضافی یا فایل‌های محلی دریافت کند؛ بنابراین تشخیص منبع هر پکیج برای عیب‌یابی اهمیت دارد.

آیا می‌توان پکیج‌های PyPI را به‌صورت آفلاین نصب کرد؟

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

برای مثال، می‌توانید در محیطی که به مخزن دسترسی دارد، فایل‌های توزیع پکیج و وابستگی‌های آن را در یک پوشه دانلود کنید:

python -m pip download -r requirements.txt -d ./packages

سپس پوشه حاوی فایل‌های دانلودشده را به محیط مقصد منتقل کنید و نصب را با استفاده از فایل‌های محلی انجام دهید:

python -m pip install --no-index --find-links=./packages -r requirements.txt

این روش فقط زمانی موفق می‌شود که فایل‌های لازم برای تمام وابستگی‌ها در دسترس باشند و با نسخه پایتون، سیستم‌عامل و معماری محیط مقصد سازگاری داشته باشند. اگر یکی از وابستگی‌ها در پوشه موجود نباشد، pip نمی‌تواند آن را از اینترنت دریافت کند؛ زیرا گزینه --no-index جست‌وجو در مخزن پکیج‌ها را غیرفعال می‌کند.

برای همین، نصب آفلاین راهی برای دور زدن هر نوع محدودیت نیست، بلکه روشی برای استفاده مجدد از فایل‌های دانلودشده است. اگر قصد دارید پکیج‌ها را بین دو دستگاه جابه‌جا کنید، تفاوت سیستم‌عامل و نسخه پایتون را نیز در نظر بگیرید.

لینک‌های نصب و تنظیم شکن بر اساس دستگاه

روش تنظیم DNS برای استفاده از PyPI به سیستم‌عامل یا دستگاه شما بستگی دارد. به همین دلیل، به‌جای تکرار آموزش کامل هر دستگاه در این صفحه، می‌توانید از راهنمای متناسب با محیط خود استفاده کنید.

راهنمای گوشی و تبلت

راهنمای کامپیوتر و سیستم‌عامل‌ها

راهنمای تنظیم شبکه

اگر هدف شما نصب کتابخانه‌های پایتون روی لپ‌تاپ یا رایانه برنامه‌نویسی است، معمولاً بهتر است از راهنمای سیستم‌عامل همان دستگاه شروع کنید. اگر pip در یک سرور یا محیط مجازی راه دور اجرا می‌شود، تنظیمات شبکه محیط اجرا را نیز بررسی کنید؛ تغییر DNS دستگاه شخصی به‌تنهایی تضمین نمی‌کند که سرور از همان تنظیمات استفاده کند.

ارتباط PyPI با سایر ابزارهای توسعه‌دهندگان

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

  • npm: اگر با پروژه‌های JavaScript کار می‌کنید و مشکل شما به نصب پکیج‌های npm مربوط است، راهنمای تحریم شکن برای npm را ببینید.

  • Hugging Face: برای مشکلات دسترسی به مدل‌ها، دیتاست‌ها و ابزارهای مرتبط با هوش مصنوعی، صفحه تحریم شکن برای Hugging Face می‌تواند مرتبط باشد.

  • GitHub: اگر دریافت کد از مخزن یا دسترسی به منابع پروژه با مشکل مواجه شده است، راهنمای تحریم شکن برای GitHub را بررسی کنید.

  • Docker: اگر مشکل شما به دریافت ایمیج‌ها یا دسترسی به رجیستری Docker مربوط است، موضوع آن با نصب کتابخانه از PyPI متفاوت است و باید در راهنمای اختصاصی تحریم شکن برای Docker بررسی شود.

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

سؤالات متداول درباره تحریم شکن برای PyPI

آیا می‌توان فقط برای pip از DNS شکن استفاده کرد و DNS بقیه برنامه‌ها را تغییر نداد؟

به‌صورت معمول، تنظیم DNS شکن روی سیستم‌عامل بر درخواست‌های DNS سایر برنامه‌های همان محیط نیز تأثیر می‌گذارد و مخصوص pip نیست. اگر به تنظیمی محدود به یک ابزار نیاز دارید، باید از روش‌های سازگار با همان ابزار استفاده کنید؛ تنظیم پراکسی برای pip، در صورت داشتن پراکسی معتبر، یکی از گزینه‌های متفاوت از تغییر DNS سیستم است.

چرا نصب یک کتابخانه انجام می‌شود اما کتابخانه دیگری دانلود نمی‌شود؟

پکیج‌های مختلف ممکن است نسخه‌های متفاوت، وابستگی‌های اضافی یا فایل‌های سازگار با سیستم‌عامل‌های مختلف داشته باشند. همچنین ممکن است یکی از آن‌ها از مخزن خصوصی یا منبع خارجی دریافت شود. نام پکیج ناموفق و نخستین خطای نمایش‌داده‌شده را بررسی کنید تا مشخص شود مشکل از دسترسی شبکه است یا از نسخه و وابستگی‌ها.

آیا تغییر DNS باعث می‌شود pip از محدودیت نسخه پایتون عبور کند؟

خیر. DNS در شناسایی مقصدهای شبکه نقش دارد و سازگاری نسخه‌ها را تغییر نمی‌دهد. اگر یک کتابخانه به نسخه جدیدتری از پایتون نیاز داشته باشد، باید نسخه پایتون یا نسخه سازگار کتابخانه را بررسی کنید. تغییر DNS این ناسازگاری را برطرف نمی‌کند.

اگر اینترنت قطع شود، آیا کتابخانه‌های نصب‌شده همچنان کار می‌کنند؟

بله، در حالت معمول کتابخانه‌هایی که قبلاً نصب شده‌اند برای اجرا به دریافت مجدد از PyPI نیاز ندارند. البته برنامه ممکن است برای انجام وظایف خود به APIهای آنلاین، پایگاه داده یا منابع اینترنتی دیگری وابسته باشد. همچنین نصب وابستگی جدید بدون فایل‌های محلی موردنیاز به اینترنت یا منبع جایگزین نیاز دارد.

آیا تنظیم DNS شکن روی رایانه شخصی برای نصب پکیج در Google Colab کافی است؟

خیر، لزوماً کافی نیست. کدهای اجراشده در Google Colab روی محیطی راه دور اجرا می‌شوند و نصب پکیج‌ها نیز از همان محیط انجام می‌شود. بنابراین، تغییر DNS رایانه شخصی شما مستقیماً تنظیمات شبکه محیط Colab را تغییر نمی‌دهد. در چنین شرایطی، باید وضعیت دسترسی محیط اجرا را بررسی کنید.

اگر pip از مخزن خصوصی استفاده می‌کند، آیا باید آدرس PyPI را جایگزین کنم؟

نه لزوماً. برخی پروژه‌ها به پکیج‌های داخلی یا نسخه‌های منتشرشده در مخازن خصوصی وابسته‌اند. تغییر رجیستری ممکن است باعث شود این وابستگی‌ها پیدا نشوند یا احراز هویت آن‌ها با مشکل مواجه شود. ابتدا تنظیمات پروژه و فایل پیکربندی pip را بررسی کنید و فقط در صورتی آدرس مخزن را تغییر دهید که مطمئن باشید پروژه به آن منبع نیاز ندارد.

چگونه بفهمم خطای نصب به خود PyPI مربوط است یا به یک فایل دانلودی؟

به پیام کامل خطا و مرحله‌ای که نصب در آن متوقف شده است توجه کنید. اگر دریافت اطلاعات پکیج انجام می‌شود اما دانلود فایل با خطا مواجه است، احتمال دارد مشکل مربوط به دامنه فایل‌ها یا ارتباط شبکه در مرحله دانلود باشد. بررسی جزئیات نصب با -v و آزمایش دامنه‌های مرتبط می‌تواند به تشخیص این تفاوت کمک کند.

آیا برای نصب پکیج‌های پایتون به تغییر تنظیمات امنیتی pip نیاز دارم؟

در حالت معمول خیر. ابتدا اتصال، DNS، نسخه پایتون، تنظیمات مخزن و گواهی‌های معتبر را بررسی کنید. غیرفعال کردن بررسی گواهی SSL یا استفاده از گزینه‌هایی که اعتبارسنجی امنیتی را کاهش می‌دهند، راهکار عمومی و مناسبی برای رفع خطاهای دسترسی نیستند.

جمع‌بندی

اگر هنگام اجرای pip install یا نصب وابستگی‌های پروژه با مشکل مواجه می‌شوید، ابتدا مشخص کنید خطا از DNS، شبکه، گواهی SSL، تنظیمات مخزن یا ناسازگاری نسخه‌ها ناشی شده است. سپس متناسب با علت احتمالی، تنظیمات را بررسی کنید.

تحریم شکن برای PyPI می‌تواند در شرایطی که مشکل به محدودیت یا اختلال DNS مربوط است، به بهبود دسترسی کمک کند؛ اما برای خطاهای مربوط به نسخه پکیج، مجوز دسترسی یا گواهی امنیتی، راهکار متفاوتی لازم است.

پس از تنظیم DNS، اتصال به مخزن را آزمایش کنید و نصب یک کتابخانه را دوباره انجام دهید. اگر مشکل ادامه داشت، متن کامل خطا و محیط اجرای پایتون را بررسی کنید تا از تغییرات غیرضروری در تنظیمات سیستم جلوگیری شود.

جهت دریافت مشاوره رایگان لطفاً فرم زیر را تکمیل کنید.