
فایل requirements.txt در پایتون چیست؟
چرا باید از فایل requirements.txt در پایتون استفاده کنیم؟
مهم نیست پروژه شما یک وبلاگ ساده یا یک برنامه بسیار بزرگ باشه، هر پروژه ای یک سری پکیج ها و کتابخانه ها نیاز داره تا بتونه اجرا و توسعه داده بشه.
حالا وقتی این پروژه بخواد توی محیط های هم مختلف توسعه داده بشه (حالا میخواد توسط دیگران باشه و یا خود شما در آینده)، آیا باید هر بار بگرده ببینه این پروژه چه وابستگی هایی (dependencies) و با چه ورژنی داره و به صورت دستی تک به تک اون ها رو نصب کنه؟
خب قطعا نه چون هم خیلی احتمال خطای زیادی داره و هم زمان بره و هم هماهنگ شدن افراد مختلف (مثل تیم) روی ورژن های یکسان سخته چون هر کس ورژن بخصوصی رو در سیستم خودش نصب میکنه.
ولی فایل requirements.txt این مشکل رو حل کرده که به طور خاص برای مدیریت وابستگی ها در زبان پایتون طراحی شده (اگر با زبان برنامه نویسی پایتون آشنایی ندارید میتونید به صورت رایگان در دوره آموزش پایتون شرکت کنید).
فایل requirements.txt در پایتون چیست؟
requirements.txt یک فایل متنی ساده است برای مشخص کردن وابستگی ها (dependencies) و کتابخانه ها به همراه نسخه های خاص (یا محدوده نسخه ها) است که پروژه برای اجرا به اون ها نیاز داره.
به طور خلاصه این فایل برای مدیریت وابستگی های (dependencies) پروژه به استفاده میشه که توی زبان های برنامه نویسی مختلف همچین فایلی به شکل های مختلف وجود داره مثلا:
فایل requirements.txt تا حدی نقشی شبیه به فایل package.json در جاوااسکریپت (Node.js) داره ولی ابتدایی تر و ساده تر.
آموزش ساخت فایل requirements.txt در پایتون
بعد از مطمئن شدن از فعال بودن محیط مجازی (virtual environment)، دستور زیر را در ترمینال مسیر پروژه وارد کنید تا لیست پکیج های نصب شده به همراه نسخه اون ها در فایل requirements.txt ذخیره شود:
pip freeze > requirements.txt
نکته: اگر میخواید فقط لیست وابستگی ها (dependencies) رو ببینید و در فایل ذخیره نشن دستور زیر را وارد کنید:
pip freeze
ساختار فایل requirements.txt به همراه مثال
فایل requirements.txt ساختار بسیار ساده ای داره. در هر خط اسم پکیج با همراه نسخه آن نوشته میشه مثال:
flask==2.1.2
requests>=2.25.0
pandas
numpy~=1.23.0
معنی هر خط:
- - flask==2.1.2: نصب نسخه دقیق 2.1.2 از فریم ورک فلسک
- - requests>=2.25.0: نصب نسخه 2.25.0 یا بالاتر از کتابخانه requests
- - pandas: اگه نسخه ای مشخص نشه موقع نصب آخرین نسخه از اون پکیج نصب میشه (تا جایی ممکنه این کار رو نکنید چون در محیط های مختلف ورژن های مختلف از پکیج ها نصب میشن که ممکنه باعث باگ توی پروژه بشه)
- - numpy~=1.23.0: ~= به معنی نسخه های سازگار (compatible release) است مثال:
در پکیجی که به صورت package~=X.Y.Z است بخش ها به این صورت است:
- X = نسخه اصلی (major)
- Y = نسخه فرعی (minor)
- Z = اصلاحات یا باگفیکسها (patch)
اگر به صورت ~= نوشته بشه فقط تغییر بخش سوم پکیج (Z یا همون patch) میتونه قابل قبول باشه مثلا برای numpy~=1.23.0:
1- نسخه های مجاز: 1.23.0, 1.23.1, 1.23.5 و غیره
2- نسخههای غیرمجاز: 1.24.0, 2.0.0 (چون بخش minor یا major تغییر کرده)
نصب پکیچ ها از فایل requirements.txt در پایتون
با استفاده از دستور زیر میتوان تمام پکیج هایی که داخل فایل requirements.txt نوشته شدن رو نصب کرد:
pip install -r requirements.txt
نکته: در دستور بالا منظور از -r همون --requirement است و اگر این flag رو نزارید pip فکر میکنه که requirements.txt یک پکیج است و سعی میکنه که اون رو دانلود و نصب کنه که باعث ارور میشه.
الان بیشتر از 6 ساله که مشغول برنامه نویسی وب هستم و در طول این مدت کلی چالش رو پشت سر گذاشتم و عاشق اینم که هر چیزی رو که در این مدت یاد گرفتم رو به بقیه هم یاد بدم، الانم در بستر سایت گیک باز دارم دانشم رو با بقیه تقسیم میکنم :)