روش جدید مدیریت Dependencyها در پایتون
خیلی وقت بود که توی پایتون کمبود ابزارهای مثل yarn، composer و … احساس میشد
تا اینکه چند وقت پیش ابزاری به اسم Pipenv ساخته شد،
تا هر چیز خوبی که این پکیجمنیجرها میدن رو تو پایتون هم داشته باشیم و در عین حال ویندوز رو هم آدم حساب کنه (مثل اینکه اون یکیها حساب نمیکنن).
پایتون به تنهایی خیلی از قابلیتها رو نداره و برای اینکه مثلا به یه دیتابیس خاصی وصل شیم مجبوریم از ابزارهایی مثل pip استفاده کنیم تا پکیج درایور اون دیتابیس رو نصب کنیم.
در عین حال وقتی این پکیجها رو نصب میکنیم اگر اونها رو توی یه محیط ایزوله نصب نکنیم ممکنه به پایتون اصلی سیستم صدمه بخوره و در کل شلوغ بشه. برای همین دهههاست برنامهنویسهای پایتون از virtualenv تو محیط پروژههاشون استفاده میکنن. virtualenv به ما این امکان رو میده که یه کپی از ورژن انتخابی پایتون (۲.۷، ۳.۶ و … ) داشته باشیم و تو پروژه ازش استفاده کنیم. هر بلایی که میخوایم سرش بیاریم و اگر هم خراب شد پاکش کنیم و یه بار دیگه بسازیمش.
Pipenv ابزاری هست که همونطور که از اسمش مشخصه (pip + env = pipenv) هر دو این قابلیتها رو به ما میده. این ابزار رو Kenneth Reitz (سازنده ماژول معروف requests توی پایتون) نوشته.
کار با این ماژول خیلی ساده هست و برای نصبش دستور زیر رو میزنیم:
1
pip install --user pipenv
البته من ترجیح میدم این ماژول رو توی محیط user به جای system نصب کنم و پوشه bin رو به path اضافه کنم.
بعد از نصب این ماژول به پوشه پروژه پایتونیتون برید و پروژه جدید رو با Pipenv شروع کنید.
1
2
cd my_project
pipenv install
با زدن این دستورها دوتا فایل جدید توی دایرکتوری پروژهتون ساخته میشه، Pipfile و Pipfile.lock و اگر virtualenv قبلا ساخته نشده باشه تو این مرحله ساخته میشه. اگر flagهای مثل –two یا –three رو بزنید میتونید ورژن پایتون رو هم انتخاب کنید در غیر این صورت از پایتون پیشفرض سیستم برای ساخت virtualenv استفاده میکنه.
برای نصب ماژولهای جدید از دستور install استفاده کنید.
1
pipenv install Flask-HTMLmin
با زدن این دستور فایلهای Pipfile و Pipfile.lock هم آپدیت میشن و مشخصات ماژول بهشون اضافه میشه.
بعضی وقتها نیاز هستش ماژولهایی رو نصب کنید که فقط تو محیط توسعه و کدنویسی ازشون استفاده میشه و جز نیازمندی های برنامه نیستن، برای این کار –dev رو به دستور install اضافه کنید.
1
pipenv install --dev nose2
برای اینکه به shell که virtualenv داره دسترسی داشته باشید دستور زیر رو بزنید:
1
pipenv shell
این کار مثل activate هستش که تو قبل از Pipenv برای فعال کردن virtualenv ازش استفاده میشد.
اگر هم نمیخواهید وارد محیط shell بشید و فقط میخواهید کدی رو توی محیط پروژهتون اجرا کنید از دستور زیر استفاده کنید:
1
pipenv run python my_project.py
البته باید بگم دستورها و کارهای خیلی زیادی هست که من اونها رو توضیح ندادم ولی امیدوارم این پست تقریبا شما رو با Pipenv اشنا کرده باشه. Pipenv رو حدود یک سالی هست برنامهنویسهای حرفهای پایتون ازش استفاده میکنن بد نیست ما هم ازش استفاده کنیم :)
منابع
- https://bryson3gps.wordpress.com/2017/11/08/stop-everything-start-using-pipenv/
- https://www.kennethreitz.org/
- https://pipenv.readthedocs.io/en/latest/
- https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv