پروژه های پایتون را ایجاد کنید که نگهداری آنها آسان باشد

تصور کنید یک پروژه خصوصی پایتون در github خود دارید که ماه هاست آن را باز نکرده اید. وقتی آن را روی لپ تاپ خود امتحان می کنید، معلوم می شود که کار نمی کند، یا به این دلیل که وابستگی ندارد یا نسخه پایتون شما مطابقت ندارد و غیره. تمام روز سعی می کنید مشکل را حل کنید و در نهایت پروژه می تواند روی لپ تاپ شما اجرا شود. حالا تصور کنید اگر این اتفاق در دفتر شما افتاده باشد. این برنامه نه تنها باید بر روی لپ تاپ شما اجرا شود، بلکه باید بر روی سرورها و لپ تاپ همکاران شما نیز قابل اجرا باشد. حل این مشکل بارها و بارها سازنده نیست.
در این وبلاگ نکات و ترفندهایی را ارائه خواهم کرد تا پروژه پایتون شما را آسان تر نگهدارید. استفاده از بهترین روش ها در پایتون
1. نسخه پایتون مورد استفاده را تعریف کنید
هر وابستگی پایتون حداقل نسخه پایتون خود را دارد. به عنوان مثال، جنگو 1.8 فقط توسط پایتون 2.7 قابل استفاده است (چه کسی همچنان از Python 2.7 در سال 2024 استفاده خواهد کرد؟). برای استفاده از FastAPI، حداقل نسخه Python 3.5 است زیرا ویژگی typehint برای اولین بار در Python 3.5 معرفی شد.
کجا باید نسخه پایتون مورد استفاده را تعریف کنم؟ من شخصا نسخه پایتون را در README.md تعریف می کنم. من یک بخش با عنوان الزامات ایجاد کردم و سپس آنها را در آن بخش تعریف کردم. می توانید یک نمونه را در مخزن GitHub زیر مشاهده کنید https://github.com/BimaAdi/Make-Maintainable-Python-Project.
2. استفاده از یک محیط مجازی
به طور پیش فرض هنگام استفاده از pip زمانی که ما انجام می دهیم pip install {nama package}
pip وابستگیها را در سطح جهانی ذخیره میکند، بنابراین همه پروژههای لپتاپ ما میتوانند به آنها دسترسی داشته باشند. مشکل این است که همه پروژه ها از این وابستگی ها استفاده نمی کنند. به عنوان مثال، شما 2 پروژه دارید، یکی پروژه در مورد یادگیری ماشین و پروژه دیگر در مورد توسعه backend. پروژههای یادگیری ماشینی از وابستگیهای مرتبط با یادگیری ماشینی مانند numpy، pandas، scikit Learn و غیره استفاده میکنند، در حالی که پروژههای توسعه باطن از چارچوبهای وب مانند جنگو استفاده میکنند. پروژه های یادگیری ماشینی به جنگو نیاز ندارند و پروژه های توسعه باطن نیز به یادگیری numpy، pandas یا scikit نیاز ندارند. با استفاده از یک محیط مجازی، وابستگی ها را بر اساس نیاز پروژه های خود گروه بندی می کنیم.
برای ایجاد یک محیط مجازی در پوشه پروژه، دستور زیر را اجرا کنید:
python -m venv env
در پوشه پروژه یک پوشه جدید به نام env/ مشاهده خواهید کرد. این پوشه مفسر پایتون و وابستگی های پایتون را ذخیره می کند. برای استفاده از پایتون در پوشه env دستور زیر را اجرا کنید:
لینوکس و ماکو (باش یا zsh)
source env/bin/activate
ویندوز (command promt)
env\Scripts\activate.bat
ویندوز (پاورشل)
env\Scripts\activate.ps1
پس از اجرای دستور بالا، در صفحه سمت چپ ترمینال/command prompt/powershell یک نماد (env) وجود دارد.
این نشان می دهد که پایتون مورد استفاده، پایتون موجود در پوشه env (محیط مجازی) است، نه پایتونی که به صورت سراسری نصب شده است. اگر سعی کنید دستور را اجرا کنید pip list
هیچ وابستگی به جز پیش فرض های پایتون شما وجود ندارد.
اگر آن را اجرا کنید pip install {nama depedency}
هنگامی که یک نماد (env) وجود دارد، وابستگی در پوشه env ذخیره می شود. سعی کنید آن را انجام دهید pip install Faker pandas
سپس pip list
وابستگی ها در پوشه env ذخیره می شوند.
2 راه برای استفاده از مفسر سراسری پایتون وجود دارد. راه اول باز کردن یک ترمینال/خط فرمان/پاورشل جدید است. راه دوم خاموش کردن محیط با استفاده از دستور است deactivate
.
در صورت استفاده از git مطمئن شوید که پوشه env در مخزن git موجود نیست. پوشه env را به فایل .gitignore اضافه کنید.
3. Catat depedency فایل pada فایل requires.txt
هرچه پروژه بزرگتر باشد، وابستگی های بیشتری مورد نیاز است. نصب تک تک وابستگی ها قطعا زمان زیادی می برد. جدای از آن، ما همچنین باید تعریف کنیم که از چه نسخه وابستگی استفاده می شود. برای حل این مشکل می توانید از requires.txt استفاده کنید. requires.txt فقط یک فایل txt معمولی است که وابستگی های پایتون و نسخه استفاده شده را ذخیره می کند.
برای ایجاد یک فایل requires.txt هنگام اجرای یک محیط مجازی، دستور را اجرا کنید pip freeze > requirements.txt
. سفارش pip freeze
تمام وابستگی ها و نسخه ها را در محیط مجازی نمایش می دهد. سفارش > requirements.txt
برای ذخیره نتایج در فایل requires.txt.
برای روشن تر شدن. من یک پروژه نمونه دارم که از تمام نکات بالا استفاده می کند. می توانید آن را در مخزن github مشاهده کنید https://github.com/BimaAdi/Make-Maintainable-Python-Project
در واقع، بسیاری از نکات دیگر برای سهولت در نگهداری پروژه های پایتون وجود دارد، مانند استفاده از تست، فرمت کننده و غیره. با این حال، در این وبلاگ میخواهم فقط در پایتون و تا حد امکان مینیمال صحبت کنم. اگر نکات یا راه حل های دیگری دارید، لطفاً آنها را در ستون نظرات اضافه کنید.