سطح مقدماتی (Beginner Level)
قدرت واقعی پایتون در کتابخانههای شخص ثالث (Third-party Libraries) آن نهفته است. مخزن بستههای پایتون (PyPI) حاوی صدها هزار ابزار آماده است. برای استفاده از این ابزارها، باید یاد بگیریم چگونه آنها را نصب و مدیریت کنیم.
۱. مفهوم PIP (مدیر بسته)
کلمه PIP مخفف "PIP Installs Packages" است. این ابزار استانداردی برای نصب و مدیریت بستههای نرمافزاری است که در پایتون نوشته شدهاند.
دستورات پایهای PIP
برای کار با PIP باید از ترمینال (Command Prompt یا Terminal) استفاده کنید، نه داخل کد پایتون.
مثال ۱: نصب یک پکیج
برای نصب کتابخانهای مثل requests (برای ارسال درخواستهای HTTP):
# این دستور در ترمینال اجرا میشود
pip install requests
مثال ۲: مشاهده لیست پکیجهای نصب شده برای دیدن تمام کتابخانههایی که در حال حاضر روی سیستم شما نصب هستند:
pip list
مثال ۳: حذف یک پکیج
اگر دیگر به پکیج requests نیاز ندارید:
pip uninstall requests
۲. مفهوم محیط مجازی (Virtual Environment)
یکی از چالشهای اصلی در برنامهنویسی، تداخل نسخههاست. فرض کنید پروژه A به نسخه ۱.۰ از یک کتابخانه نیاز دارد و پروژه B به نسخه ۲.۰. اگر همه چیز را روی سیستم اصلی نصب کنید، این دو پروژه با هم تداخل پیدا میکنند.
راهحل: محیط مجازی (venv).
محیط مجازی یک پوشه ایزوله است که پایتون و پکیجهای مخصوص به همان پروژه را در خود نگه میدارد.
ساخت و فعالسازی محیط مجازی
این کار در دو مرحله انجام میشود: ساختن پوشه و سپس فعال کردن آن.
مرحله ۱: ساخت محیط مجازی
در پوشه پروژه خود، دستور زیر را در ترمینال اجرا کنید (معمولاً نام محیط را .venv یا venv میگذارند):
# ویندوز، مک و لینوکس
python -m venv .venv
مرحله ۲: فعالسازی (Activation) پس از ساخت، باید به سیستم بگویید که از این به بعد از پایتونِ داخل این پوشه استفاده کن.
مثال ۱: فعالسازی در ویندوز (Command Prompt)
.venv\Scripts\activate
مثال ۲: فعالسازی در ویندوز (PowerShell)
.venv\Scripts\Activate.ps1
مثال ۳: فعالسازی در مک و لینوکس
source .venv/bin/activate
وقتی محیط مجازی فعال شود، معمولاً نام آن (مثلاً (.venv)) در ابتدای خط فرمان ترمینال ظاهر میشود.
بررسی فعال بودن محیط مجازی در کد
میتوانیم با یک کد ساده پایتون بررسی کنیم که آیا در محیط مجازی هستیم یا خیر. این کد با مقایسه مسیر اجرایی پایتون کار میکند.
سطح پیشرفته (Professional Level)
در پروژههای بزرگ و تیمهای برنامهنویسی، مدیریت وابستگیها فراتر از یک pip install ساده است. باید بتوانید محیط توسعه را دقیقاً برای همکارانتان بازسازی کنید.
۱. فایل requirements.txt
برای اینکه همتیمیهای شما یا سرورِ دیپلوی (Deploy) بداند چه پکیجهایی باید نصب شود، از فایلی به نام requirements.txt استفاده میکنیم.
تولید فایل وابستگیها (Freeze)
دستور pip freeze تمام پکیجهای نصب شده در محیط فعلی را به همراه نسخه دقیق آنها لیست میکند.
مثال ۱: ذخیره لیست پکیجها در فایل
# خروجی pip freeze را داخل فایل requirements.txt میریزد
pip freeze > requirements.txt
محتوای فایل ممکن است شبیه این باشد:
requests==2.28.1
numpy==1.23.3
urllib3==1.26.12
نصب وابستگیها از روی فایل
وقتی پروژه را روی سیستم جدیدی کلون میکنید، به جای نصب تکتک پکیجها، همه را یکجا نصب کنید:
مثال ۲: نصب گروهی
pip install -r requirements.txt
۲. مدیریت دقیق نسخهها (Version Specifiers)
گاهی اوقات نمیخواهید دقیقاً به یک نسخه محدود شوید، یا برعکس، میخواهید از نسخههای جدیدِ باگدار اجتناب کنید.
مثال ۱: نصب نسخه خاص
pip install pandas==1.4.2
مثال ۲: نصب حداقل نسخه (Minimum Version)
# نسخههای بزرگتر یا مساوی ۲.۵ را نصب میکند
pip install "Django>=2.5"
مثال ۳: جلوگیری از آپدیتهای ناسازگار
# نسخههای بزرگتر از ۱.۰ ولی کمتر از ۲.۰ را نصب میکند (مثلاً ۱.۵، ۱.۹)
pip install "requests>=1.0,<2.0"
۳. نکات فنی و ساختاری (Best Practices)
الف) استفاده از python -m pip
همیشه توصیه میشود به جای دستور مستقیم pip، از python -m pip استفاده کنید.
- چرا؟ اگر چندین نسخه پایتون روی سیستم دارید (مثلاً ۳.۹ و ۳.۱۰)، دستور
pipممکن است پکیج را روی پایتون اشتباه نصب کند. اماpython -m pipتضمین میکند پکیج دقیقاً روی همان مفسر پایتونی نصب شود کهpythonبه آن اشاره دارد.
# روش حرفهای و ایمن
python -m pip install numpy
ب) مکان جستجوی پکیجها (sys.path)
وقتی import میکنید، پایتون چگونه پکیج را پیدا میکند؟ پایتون لیستی از آدرسها را در sys.path جستجو میکند.
ج) کش کردن و نصب آفلاین
PIP به صورت خودکار فایلهای دانلود شده را کش (Cache) میکند تا در نصبهای بعدی سریعتر عمل کند.
مثال ۱: نصب بدون استفاده از اینترنت (در صورت وجود در کش)
pip install --no-index --find-links=/local/dir/ some-package
مثال ۲: مشاهده اطلاعات کش
pip cache info
۴. ابزارهای مدرن جایگزین (Poetry و Pipenv)
در سطح حرفهای، گاهی requirements.txt کافی نیست زیرا وابستگیهایِ وابستگیها (Transitive Dependencies) را به خوبی مدیریت نمیکند.
ابزارهایی مانند Poetry یا Pipenv فایلهای قفل (Lock files) ایجاد میکنند که دقیقاً هش (Hash) فایلها را ذخیره کرده و امنیت و سازگاری ۱۰۰٪ را تضمین میکنند.
# Static snippet: ساختار فایل pyproject.toml در Poetry
# این روش مدرنتر از requirements.txt است
# [tool.poetry.dependencies]
# python = "^3.10"
# requests = "^2.28"