خانه » نحوه مدیریت بسته های پایتون با استفاده از PIP
آموزش

نحوه مدیریت بسته های پایتون با استفاده از PIP

PIP ، مدیر بسته پایتون، برای نصب، ارتقا، حذف بسته های نوشته شده به زبان برنامه نویسی پایتون استفاده می شود. در این راهنما، نحوه نصب پیپ و مدیریت بسته های پایتون مانند نصب، به روز رسانی و حذف بسته ها با استفاده از pip را مورد بحث قرار خواهیم داد. علاوه بر این، خواهیم دید که محیط مجازی چیست، چگونه آن را ایجاد کنیم و چگونه بسته ها را در محیط مجازی با استفاده از ابزارهای venv و/یا virtualenv جدا کنیم.

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

در Arch Linux و انواع آن مانند Antergos ، Manjaro Linux ، می توانید pip را با استفاده از دستور نصب کنید:

پایتون ۲:

$ sudo pacman -S python2-pip python2-wheel python2-setuptools

پایتون ۳:

$ sudo pacman -S python-pip python-wheel python-setuptools

در فدورا ۲۱:

پایتون ۲:

$ sudo dnf upgrade python-setuptools
$ sudo dnf install python-pip python-wheel

پایتون ۳:

$ sudo dnf install python3 python3-wheel

فدورا ۲۲:

پایتون ۲:

$ sudo dnf install python3 python3-wheel
$ sudo dnf install python-pip python-wheel

پایتون ۳:

$ sudo dnf install python3 python3-wheel

برای دریافت نسخه های جدیدتر pip، setuptools و wheel برای Python 2 ،PyPA Copr Repo را با استفاده از دستور فعال کنید:

$ dnf copr enable pypa/pypa

و سپس اجرا کنید:

$ sudo dnf upgrade python-setuptools
$ sudo dnf install python-pip python-wheel

در CentOS/RHEL:

Pip and wheel در مخازن پیش فرض CentOS و RHEL موجود نیست. برای نصب پیپ در CentOS، RHEL، Scientific Linux و سایر سیستم‌های مبتنی بر RPM، مخزن EPEL را با استفاده از دستور فعال کنید:

$ sudo yum install epel-release

و سپس دستور زیر را برای نصب pip اجرا کنید:

$ sudo yum install python-pip
$ sudo yum install python-wheel

از آنجایی که بسته setup-tools در مخازن پیش فرض موجود است، می توانید آن را با استفاده از دستور نصب کنید:

$ sudo yum upgrade python-setuptools

پایتون ۳:

$ sudo yum install python3-pip

openSUSE:

پایتون ۲:

$ sudo zypper install python-pip python-setuptools python-wheel

پایتون ۳:

$ sudo zypper install python3-pip python3-setuptools python3-wheel

دبیان/اوبونتو:

برای پایتون ۲x :

$ sudo apt-get install python-pip

برای پایتون ۳x:

برای نصب نسخه Python 3x را با Python3 جایگزین کنید.

$ sudo apt-get install python3-pip

اگر از اوبونتو 12.04 استفاده می کنید، می توانید pip3 را با استفاده از دستورات زیر نصب کنید:

$ sudo apt-get install python3-setuptools
$ sudo easy_install3 pip

نصب پیپ از باینری ها

اگر می خواهید پیپ را از باینری ها نصب کنید، کافی است:

$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py

لطفاً توجه داشته باشید که get-pip.py ابزارهای setup-tools و wheel را نیز نصب خواهد کرد. همانطور که قبلاً اشاره کردم، برخی از توزیع‌های لینوکس wheel را در مخازن اصلی ندارند. در چنین مواردی، ممکن است لازم باشد برخی از مخازن شخص ثالث، به عنوان مثال EPEL را اضافه کنید.

اگر از Python 2 >=2.7.9 یا Python 3 >=3.4 باینری دانلود شده از python.org استفاده می کنید، pip قبلاً نصب شده است. با این حال، شما باید پیپ را با استفاده از دستور ارتقا دهید:

$ sudo pip install -U pip

و یا

$ sudo pip install --upgrade pip

برای به‌روزرسانی همه (pip، setuptools، whell)، اجرا کنید:

$ sudo pip install --upgrade pip setuptools wheel

برای پیدا کردن نسخه نصب شده pip/pip3، اجرا کنید:

$ pip --version

و یا

$ pip -V

خروجی نمونه خواهد بود:

pip 9.0.1 from /usr/lib/python3.6/site-packages (python 3.6)

ایجاد محیط های مجازی

قبل از نصب هر بسته پایتون، توصیه می شود یک محیط مجازی ایجاد کنید. ممکن است بپرسید چرا باید محیط مجازی ایجاد کنیم؟  “محیط های مجازی” پایتون به ما این امکان را می دهد که یک بسته پایتون را به جای نصب عمومی، در یک مکان مجزا نصب کنیم.

فرض کنید می خواهید یک بسته پایتون نصب کنید، به عنوان مثال youtube-dl، که به نسخه 1 LibFoo نیاز دارد، اما برنامه دیگری به نسخه 2 نیاز دارد. چگونه می توانید از هر دو این برنامه ها استفاده کنید؟ اگر همه چیز را در /usr/lib/python2.7/site-packages یا /usr/lib/python3.6/site-packages (یا هر مکان استاندارد پلتفرم شما که باشد) نصب کنید، به راحتی در موقعیتی قرار می گیرید که شما به طور ناخواسته برنامه ای را ارتقا دهید که نباید ارتقا داده شود . برای جلوگیری از این امر، بسته ها را در محیط مجازی ایزوله می کنیم. همه محیط های مجازی دایرکتوری های نصب مخصوص به خود را دارند و با یکدیگر تعامل یا تضاد ندارند.

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

۱- venv

۲- virtualenv

برای Python 2.x باید virtualenv را نصب کنید. برای انجام این کار، اجرا کنید:

$ sudo pip install virtualenv

بیایید اکنون یک محیط مجازی ایجاد کنیم.

با استفاده از virtualenv:

$ virtualenv <DIR_NAME>
$ source <DIR_NAME>/bin/activate

برای پایتون 3.x باید venv را نصب کنید. در سیستم های مبتنی بر اوبونتو، می توانید آن را با استفاده از دستور نصب کنید:

$ sudo apt-get install python3-venv

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

$ python3 -m venv <DIR_NAME>
$ source <DIR_NAME>/bin/activate

با اجرای دستور بالا بلافاصله در محیط مجازی خود قرار می گیرید.

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

$ deactivate

مدیریت بسته های پایتون با استفاده از Pip

اکنون رایج ترین استفاده از پیپ های پایه را با مثال هایی خواهیم دید.

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

$ pip

شما باید خروجی چیزی مانند زیر را ببینید.

برای اینکه بدانید دستور install چه کاری انجام می دهد، اجرا کنید:

$ pip install --help

رایج ترین استفاده از پیپ نصب از PyPi (شاخص بسته Python) است . PyPi یک مخزن است که شامل تمام بسته های ایجاد شده توسط جامعه توسعه دهندگان در پایتون است.

بسته ها را نصب کنید

ابتدا محیط مجازی را مطابق شکل زیر ایجاد کنید:

با استفاده از virtualenv:

$ virtualenv MYENV

MYENV را با نام خود جایگزین کنید.

با استفاده از venv:

$ python3 -m venv MYENV

در نهایت با استفاده از دستور آن را فعال کنید:

$ source MYENV/bin/activate

پس از اجرای دستور بالا، در محیط مجازی خود قرار می گیرید:

اکنون زمان نصب چند پکیج فرا رسیده است. برای نصب یک بسته، به عنوان مثال youtube-dl، اجرا کنید:

$ pip install youtube-dl

این دستور youtube-dl را با تمام وابستگی هایش نصب می کند.

برای نصب یک نسخه خاص، اجرا کنید:

$ pip install youtube_dl=2017.12.14

برای نصب نسخه ای غیر از نسخه مشخص، اجرا کنید:

$ pip install youtube_dl!=2017.12.14

به علامت “!” جلوی نماد مساوی توجه کنید.

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

$ pip install youtube_dl>=2017.12.14

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

$ pip install youtube_dl>=2017.12.14, <2017.12.20

برای نصب نسخه ای که هست”سازگار” با یک نسخه خاص:

$ pip install youtube_dl~=2017.12.14

دانلود بسته ها

برای دانلود یک بسته با تمام وابستگی ها (بدون نصب آن)، اجرا کنید:

$ pip download youtube-dl

لیست تمام بسته های نصب شده

برای پیدا کردن بسته هایی که توسط پیپ نصب شده اند، اجرا کنید:

$ pip freeze

یا

$ pip list

این دستورات تمام بسته های نصب شده را با استفاده از pip در سیستم شما نمایش می دهد.

جستجوی بسته ها

برای جستجوی یک بسته خاص، به عنوان مثال youtube-dl، اجرا کنید:

$ pip search youtube-dl

این دستور نتیجه مطابق با رشته “youtube-dl” را جستجو و نمایش می دهد.

بسته ها را به روز کنید

برای فهرست کردن همه بسته‌های قدیمی در قالب ستون جدولی ساده، اجرا کنید:

$ pip list --outdated --format=columns

برای به روز رسانی یک بسته قدیمی، اجرا کنید:

$ pip install --upgrade youtube-dl

همچنین می‌توانیم همه نام بسته‌ها را در یک فایل ذخیره کنیم و همه آنها را یکجا به‌روزرسانی کنیم. ابتدا همه نام فایل ها را به یک فایل خروجی ذخیره می کنیم:

$ pip freeze > mypackages.txt

اکنون با استفاده از دستور همه بسته ها را به یکباره به روز کنید:

$ pip install -r mypackages.txt --upgrade

یا،

$ pip install -r mypackages.txt -U

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

$ pip freeze --local | grep -v '^\e' | cut -d = -f 1 | xargs -n1 pip install -U

همه بسته های نصب شده را در یک فایل export کنید

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

$ pip freeze > MYENV_packages.txt

حال محیط مجازی فعلی را غیرفعال کنید:

$ deactivate

و یک محیط مجازی جدید ایجاد کنید:

$ virtualenv MYENV1

MYENV1 را با نام خود جایگزین کنید.

با استفاده از venv:

$ python3 -m venv MYENV1

محیط جدید ایجاد شده را فعال کنید:

$ source MYENV1/bin/activate

اکنون، تمام بسته‌هایی را که قبلاً export کرده‌ایم نصب کنید.

$ pip install -r MYENV_packages.txt

برای نصب همه به یکباره بدون پرسیدن سوال، اجرا کنید:

$ pip install -r MYENV_packages.txt -y

به طور مشابه، می توانید با استفاده از دستور، تمام بسته ها را از لیست حذف کنید:

$ pip uninstall -r MYENV_packages.txt -y

مشاهده اطلاعات بسته

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

$ pip show youtube-dl
Name: youtube-dl
Version: 2017.12.14
Summary: YouTube video downloader
Home-page: https://github.com/rg3/youtube-dl
Author: Sergey M.
Author-email: dstftw@gmail.com
License: UNKNOWN
Location: /home/sk/MYENV/lib/python3.6/site-packages
Requires:

مشاهده وابستگی های بسته

ما می توانیم وابستگی های تمام بسته های نصب شده را با استفاده از ابزار “pipdeptree” مشاهده کنیم.

این ابزار را با استفاده از دستور نصب کنید:

$ pip install pipdeptree

پس از نصب، می توانید درخت وابستگی را با استفاده از دستور مشاهده کنید:

$ pipdeptree

پاک کردن بسته ها

برای حذف/حذف بسته نصب شده، اجرا کنید:

$ pip uninstall youtube-dl

برای حذف چند بسته، آنها را با کاما از هم جدا کنید مانند زیر:

$ pip uninstall package1, package2

برای حذف تمام بسته های پایتون نصب شده با استفاده از pip، اجرا کنید:

$ pip freeze | xargs pip uninstall -y

گاهی اوقات pip به شما اجازه نمی دهد بسته های متعلق به سیستم عامل را حذف کنید. در چنین مواردی، می‌توانید تمام بسته‌هایی را که متعلق به سیستم‌عامل نیستند با استفاده از دستور زیر حذف کنید:

$ pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')

همانطور که در قسمت قبل اشاره کردیم، می‌توانیم تمام بسته‌های نصب شده را در یک فایل ریخته و با استفاده از دستور آن‌ها را از لیست حذف کنیم:

$ pip uninstall -r MYENV_packages.txt -y

برای جزئیات بیشتر، با اجرای دستور زیر به مستندات رسمی و بخش راهنمای pip مراجعه کنید:

$ pip -- help

یا فقط،

$ pip

 امیدوارم این آموزش مفید بوده باشد

منبع:

مهدی منصوری

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

تگ

درباره نویسنده

مهدی منصوری

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

افزودن نظر

برای ارسال نظرات خود اینجا را کلیک کنید