چرا برنامه نویسان پایتون باید از pipenv استفاده کنند؟

pipenv یکی از بهترین پکیج های نصب پایتون می باشد، در این مطلب قصد داریم نکاتی بسیار مهم درباره pipenv و ویژگی های آن به شما ارائه دهیم.

چرا برنامه نویسان پایتون باید از pipenv استفاده کنند؟

Pipenv که خلاصه شده عبارت Python Development Workflow for Humans می باشد توسط کنت ریتز تولید شده است و تقریبا یک سال پیش به کد اصلی زبان برنامه نویسی پایتون اضافه شد. امروزه pipenv دارای مشکلاتی است که برخی از آنها حل شده است. ما در این مطلب قصد داریم کمی بیشتر درباره این ابزار صحبت کنیم.


خلاصه ای از تاریخچه پکیج نصب پایتون

برای اینکه به خوبی با مشکلاتی که توسط pipenv حل می شود آشنا شوید بهتر است با پکیج مدیریت پایتون بیشتر آشنا شوید، به اولین نسخه از زبان برنامه نویسی پایتون بازگردید، ما زبان پایتون را در اختیار داشتیم ولی راه حلی بی دردسر برای نصب پکیج ها را در اختیار نداشتیم، بعد از آن Easy install وارد بازار شد، پکیجی که با استفاده از آن می توانستید به راحتی سایر پکیج ها پایتون را نصب کنید، اما با استفاده از این پکیج حذف کردن پکیج هایی که دیگر مورد استفاده قرار نمی گرفتند کار سختی بود.
بعد از آن pip وارد شد که بیشتر کاربران پایتون با آن آشنا هستند، پیپ به ما این اجازه را می دهد که پکیج های مختلف را به راحتی حذف و نصب کنیم، شما حتی با استفاده از این پکیج می توانید به راحتی نسخه پکیج ها را نیز مشاهده کنید. برای نصب و حذف پکیج ها کافی است وارد run pip freeze -> requirements.txt شوید که به شما یک فایل متنی می دهد و شما می توانید با استفاده از همان فایل متنی تمام برنامه های مورد نیاز خود را با استفاده از pip install –r نصب کنید.
 اما پیپ هم دارای ضعف هایی بود که از جمله آن می توان به این مورد اشاره کرد که توانایی جدا کردن پکیج ها از یکدیگر را نداشت، در حالی که ما ممکن است در برخی از برنامه ها از کتابخانه هایی که مشابه هم هستند ولی دارای نسخه های متفاوتی هستند، استفاده کنیم، بنابراین ما باید راهی برای فعال کردن آنها داشته باشیم. بعد از آن، یک محیط مجازی جدید ایجاد شد که ما را قادر می ساخت تا محیط های کوچکتر و جداگانه ای را برای هر برنامه ایجاد کنیم. ابزارهای بسیار زیادی برای به وجود آوردن این محیط وجود دارند که از جمله آنها می توان به venv، virtual env، pyenv، virtualenvWrapper اشاره کرد که در کنار پیپ و فایل requirements.txt عملکرد مناسبی را داشتند.



پکیج جدید: pipenv

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


نکاتی مهم درباره این پکیج

این پکیج عملیات dependency management را با استفاده از تغییرات در requirements.txt و تبدیل آن به یک داکیومنت جدید به نام Pipfile انجام می دهد. هنگامی که شما یک کتابخانه با استفاده از pipenv نصب می کنید یک فایل pipfile به صورت خودکار برای پروژه شما به وجود می آید که جزئیات نصب در آن نوشته شده است که در آن می توانید اطلاعات نسخه را مشاهده کنید. یکی دیگر از مزایای استفاده از این پکیج فوق العاده این است که شما با استفاده از آن می توانید dependency management های پیچیده را به راحتی مدیریت کنید، برنامه شما ممکن است نیاز داشته باشد که تنها یک نسخه از یک کتابخانه را استفاده کند و خود این کتابخانه ممکن است به یک نسخه از یک کتابخانه دیگر نیاز داشته باشد. زمانی که دو کتابخانه مختلف از برنامه شما استفاده می کنند ممکن است وابستگی های متناقضی را برای شما به وجود بیاورند، استفاده از این پکیج می تواند این مشکل شما را به راحتی حل کند، تولید Pip file.lock می تواند باعث شود که نسخه های مناسبی از وابستگی ها را برای شما تولید کند.


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

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


چگونگی تاثیر این پکیج

این پکیج از سیگنال هایی برای افرادی که بر روی یک پروژه کار می کنند استفاده می کند و با استفاده از یک روش استاندارد سازی برای نصب وابستگی های پروژه محیطی امن را برای کار کردن فراهم می کند. به عنوان مثال فرض کنید که شما یک فایل Request.txt با چند فایل مورد نیاز را دارا می باشید که برای محیط های مختلف به آنها نیاز دارید، ممکن است این موضوع برای همکاران شما در حین اجرا کردن پروژه روشن نباشد که باید فایل dev.txt را اجرا کنند و یا فایل local.txt را اجرا کنند، علاوه بر این یک سردرگمی دیگر این است که برای همکاران شما واضح نباشد که آیا دو فایل مشابه باید همگام شوند یا خیر. شما با استفاده از این پکیج به راحتی می توانید تمامی این کارها و اقدامات را مدیریت کنید و در کارهای گروهی به موفقیت های بزرگتری دست پیدا کنید.
اگر قصد دارید از pipenv که به شما یک فایل pipfile می دهد برای مدیریت وابستگی ها استفاده کنید و اقدام به مدیریت این وابستگی ها کنید می توانید دستور وابستگی های اصلی پروژه را نصب کنید:
Pipenv install
اضافه کردن عبارت –dev به انتهای این دستور می تواند نیازمندی های dev/testing را نیز به شما ارائه دهد:
Pipenv install –dev
استفاده از این پکیج مزایای بسیار زیاد دیگری را نیز برای شما دارد که از جمله آنها می توان به ویژگی های امنیتی بهتر، یکپارچه سازی فایل های .env، تولید وابستگی های خودکار برای محیط های مختلف تولید اشاره کرد.


استفاده از pipenv در عمل

اصول استفاده از این پکیج برای مدیریت وابستگی ها بسیار دقیق است، شما برای نصب این پکیج باید از پیپ استفاده کنید:
Pip install pipenv
برای نصب پکیج ها در پروژه دلخواه خود کافی است دایرکتوری آن را به مسیر پروژه خود تغییر دهید، سپس برای نصب یک پکیج می توانید از دستور زیر استفاده کنید:
Pip install django
بعد از انجام این کار شما می توانید مشاهده کنید که این پکیج برای شما یک pipfile ایجاد کرده است، اگر شما قبلا از یک محیط مجازی استفاده نمی کردید می توانید برخی از خروجی ها را مشاهده کنید که حاوی این پیام هستند که یک محیط مجازی برای شما به وجود آمده است. بعد از آن نیز می توانید خروجی های مربوط به مشاهده پکیج های نصب شده را مشاهده کنید. اگر قصد دارید فایل Pipfile.lock را تولید کنید می توانید از دستور زیر برای انجام این کار استفاده کنید:
Pipenv lock


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

شما می توانید اسکریپت های پایتون را نیز به راحتی با استفاده از این پکیج اجرا کنید، به عنوان مثال برای اجرا یک اسکریپت پایتون در سطح بالا با نام hello.py کافی است دستور زیر را وارد کنید:
Pipenv run python hello.py
شما می توانید جواب مورد نظر خود را در قسمت کنسول مشاهده کنید.
اگر قصد شروع یک shell را دارید از دستور زیر استفاده کنید:
Pipenv shell
اگر شما قصد دارید یک پروژه که از requirements.txt استفاده می کند را به فایلی که از این پکیج استفاده می کند تبدیل کنید می توانید از دستور زیر استفاده کنید:
Pipenv install requirements.txt
این دستور برای شما یک pipfile ایجاد می کند و requirements های مورد نظر را نصب می کند. توجه داشته باشید که پروژه شما به  روز رسانی شده باشد.