فواید requirements.txt

نکته دیگه‌ای که به بازتولید نتایج کد برمی‌گرده. داشتن یه دونه فایله!! چی؟ requirements.txt


خب این فایل چیه اصولاً و اصلاً کجاها به درد می‌خوره؟ عموما دوستانی که Machine Learning ای هستن و از جامعه علمی اومدن عموما نتایج علمی براشون اولویت داره که طبیعی هم هست. توی صحبتاشون کلماتی مثل ROC و F-Measure و دقت و این داستانا مهم‌ترین چیزهاست. باز هم میگم طبیعی هم هست. چرا؟ چون می‌خوان یه بار کد رو روی کامپیوتر خودشون اجرا کنن و نتایج رو تو پیپر بزنن و چاپ کنند و تمام. تا اینجا چیز بدی نیست. بدیش زمانی مشخص میشه که اینکد رو باید به فرد دیگری بدهید که روی کامپیوتر ایشون هم اجرا بشه. خب اینجاست که تازه داستان شروع میشه. دوستان نرم‌افزاری خیلی به این مشکل برنمی‌خورند. معمولاً بچه‌های جاوایی یه pom.xml ای یه build.gradle ای چیزی دارند که همه نیازهاشون رو توش می‌نویسند. که مثلاً روی کامپیوتر دیگه خواست اجرا بشه طرف یه دستور با maven یا gradle (این‌ها pipهای جاوان)بزنه و همه نیازمندی‌های رو رفع کنه.


سناریوی زیر را درنظر بگیرید. من روی کامپیوترم یه venv دارم مثلا. به هر دلیلی دچار مشکل شده. کم پیش میاد ولی پیش میاد. به خطاهای عجیب و غریبی می‌خورم که سردرنمیارم چرا این محیط مجازی پایتونم دچار مشکل شده. تصمیم می‌گیرم برم یه دونه دیگه درست کنم و روی اون تست کنم. دوباره کد رو که اجرا کنم میگه مثلاً numpy نداری نصب می‌کنم دوباره اجرا می‌کنم. حالا pickle نداری. دوباره این‌ام نصب می‌کنم اجرا می‌کنم میگه tensorflow نداری. یعنی راهی نداره که این درد کمتر شه؟ چرا اتفاقاً داره. هر بار که از module ی استفاده کردید. اگه نسخه‌ی خاصی هست اسم و نسخه‌اش رو ذکر کنید توی یه فایل متنی. همین! همین یه مورد ساده خیلی می‌تونه کمک کنه به بازتولید نتایج کدهاتون. حتی اگر هم می‌خواید پیپر بنویسید من توصیه می‌کنم که هم کدهاتون رو در دسترس دیگران قرار بدید. هم این به روش‌های ساده رو روش اعمال کنید. دیگرانی که شما رو نمی‌شناسن کدهاتون رو که می‌بینن پرستیژ بالایی براتون قائل می‌شن. چون برای اجرا کردن کد شما درد کمتری رو تجربه کردن.


همی گویم و گفته ام بارها........................بود کیش من مهر requirements.txtها