ایجاد ساختار پروژه با pyscaffold
با پروژه های کوچک مشکلی وجود نداره. حداکثر دوسه تا فایل و درنهایت اجرای برنامه.ولی اگر پروژه گنده باشه چی ؟ایجاد و مدیریت فایل ها و پوشه ها باید به شکلی باشه که باعث نوشتن کدهای بهینه بشه و درواقع میشه گفت ساختار پروژه استاندارد باشه«یا اقلا ایطور باشه».
اینجا همون جاییه که pyscaffold وارد میشه.scaffold رو میشه داربست/داربست کردن یا چنین چیزی معنا کرد.برای شروع بایستی pyscaffold رو نصب کنید.اگر با پایتون آشنا باشید که هستید«اگر نبودید این مطلب رو نمی خوندید» می دونید که برای نصب یک ماژول در پایتون از pip استفاده میشه«برای python3 از pip3» خب . . .
pip install pyscaffold
حتما توصیه می کنم درمحیط virtualenv نصب کنید.خب بعد اینکه pyscaffold رو نصب کردیدباید یک پروژه جدید ایجاد کنیم.البته قبلش باید بگم که pyscaffold برای نصب نیاز به git داره.خب من فرض می کنم پروژه های پایتونی من در پوشه projects قرار دارند.قدم به قدم جلو می ریم.
cd projects
putup proganto
بادستور putup پروژه ی جدیدی به نام proganto ایجاد میشه «که البته شما می تونید اسم پروژه خودتون رو بزارید».اگه وارد پروژه بشید ساختار استاندارد پروژه رو می بینید.البته بعضی از اونا مخفی هستن و خب البته باید با ls -la اونها رو ببینید.ساختاری که ایجاد میشه این شکلیه :
drwxr-xr-x 6 reganto reganto 4096 Sep 14 21:03 .
drwxr-xr-x 5 reganto reganto 4096 Sep 14 21:03 ..
-rw-r--r-- 1 reganto reganto 71 Sep 14 21:03 AUTHORS.rst
-rw-r--r-- 1 reganto reganto 128 Sep 14 21:03 CHANGELOG.rst
-rw-r--r-- 1 reganto reganto 591 Sep 14 21:03 .coveragerc
drwxr-xr-x 3 reganto reganto 4096 Sep 14 21:03 docs
drwxr-xr-x 8 reganto reganto 4096 Sep 14 21:03 .git
-rw-r--r-- 1 reganto reganto 510 Sep 14 21:03 .gitignore
-rw-r--r-- 1 reganto reganto 1074 Sep 14 21:03 LICENSE.txt
-rw-r--r-- 1 reganto reganto 277 Sep 14 21:03 README.rst
-rw-r--r-- 1 reganto reganto 641 Sep 14 21:03 requirements.txt
-rw-r--r-- 1 reganto reganto 3000 Sep 14 21:03 setup.cfg
-rw-r--r-- 1 reganto reganto 592 Sep 14 21:03 setup.py
drwxr-xr-x 3 reganto reganto 4096 Sep 14 21:03 src
drwxr-xr-x 2 reganto reganto 4096 Sep 14 21:03 tests
خب بیاید این ساختار رو با هم بررسی کنیم.
در فایل AUTHORS.rst اسامی و ایمیل برنامه نویسان و مشارکت کنندگان در پروژه قرار داره.برای من این فایل ایطوره :
============
Contributors
============
* reganto <rreganto@gmail.com>
در پوشه tests فایل های مربوط به تست پروژه قرار می گیره که توضیحش از حوصله این بحث خارجه.برای من این پوشه ایطوره:
drwxr-xr-x 2 reganto reganto 4096 Sep 14 21:03 .
drwxr-xr-x 6 reganto reganto 4096 Sep 14 21:16 ..
-rw-r--r-- 1 reganto reganto 251 Sep 14 21:03 conftest.py
-rw-r--r-- 1 reganto reganto 310 Sep 14 21:03 test_skeleton.py
خب پوشه بعدی docs هستش . فایل های اولیه مربوط به مستندات در این پوشه قرار می گیره.برای ایجاد مستندات پروژه به یک ابزار مستند سازی «مانندsphinx» نیاز خواهید داشت.این پوشه برای من به این شکله :
drwxr-xr-x 3 reganto reganto 4096 Sep 14 21:03 .
drwxr-xr-x 6 reganto reganto 4096 Sep 14 21:16 ..
-rw-r--r-- 1 reganto reganto 41 Sep 14 21:03 authors.rst
-rw-r--r-- 1 reganto reganto 43 Sep 14 21:03 changelog.rst
-rw-r--r-- 1 reganto reganto 9160 Sep 14 21:03 conf.py
-rw-r--r-- 1 reganto reganto 2225 Sep 14 21:03 index.rst
-rw-r--r-- 1 reganto reganto 67 Sep 14 21:03 license.rst
-rw-r--r-- 1 reganto reganto 7600 Sep 14 21:03 Makefile
drwxr-xr-x 2 reganto reganto 4096 Sep 14 21:03 _static
پوشه ی یعدی git. هستش.پوشه ای نام آشنا برای کسایی که از گیت استفاده می کنن.فایلgitignore.برای ممانعت از track شدن فایل ها توسط ورژن کنترل«گیت یا هر ابزار دیگری» استفاده می شود. پوشه ی بعدی src هستش . در این پوشه فایل های اصلی برنامه قرار می گیره.فایل های LICENSE.rst و README.rst هم که نیاز به توضیح اضافه ندارن . اولی برای ثبت لایسنس های برنامه استفاده میشه و دومی توضیحاتی درباره ی برنامه است «مثلا:)»
فایل بعدی setup.py هستش که برای ایجاد برنامه از آن استفاده میشه.فایل requirements.txt لیست ماژول های مورد نیاز برنامه است.در مورد coveragerc. هیچ نظری ندارم!!! اگر کسی میدونه به چه دردی میخوره به من هم بگه.
فایل هایی که در ساختار پروژه ایجاد شده با pyscaffold میتونست باشه و خب نیستن.این به معنای به درد نخوربودنشون نیست فقط در ساختار pyscaffold وجود ندارن.یکی از این فایل ها CONTRIBUTING.md هستش این فایل شامل دستورالعمل های گزارش باگ و فیکس باگ و یا هرگونه بهبود در برنامه برای کسانی است که دوست دارن در پروژه مشارکت داشته باشن یا اقلا به پروژه علاقه داشته باشن«اگر علاقه نداشتن کانتریبیوت نمی کردن».فایل بعدی Makefile هستش و کامپوننت های C در اون قرار می گیره «البته اگر این کامپوننت ها وجود داشته باشه».فایل بعدی fabfile.py هستش که تسهیلاتی رو برای ارتباط بین سرور محلی و راه دور با ابزار fabric فراهم میکنه.خب اگه با فریم ورک جنگو سروکارداشته باشیدبا فایل manage.pyهم سروکارخواهید داشت«که البته من ندارم:)» و خب یه سری فایل دیگه که می تونن در پروژه استفاده بشن.
برای ایجاد پکیج نهایی
python setup.py build
وبرای نصب پکیج
python setup.py install