هر زمان که فایل پایتون ایجاد میکنیم در واقع در حال ساخت یک ماژول پایتونی هستیم. به عبارت دیگر، هر فایل پایتونی که میسازیم در سایر اسکریپتهای پایتون قابل Import است. بنابراین، طبق تعریف هر فایل پایتونی خود ماژولی برای پایتون است. برای ساخت کتابخانه در پایتون باید ماژولی که میسازیم شامل حداقل دو فایل مرتبط به هم باشد یا به عبارت دیگر اگر تعداد فایلهای پایتونی مرتبط به همدیگر دو یا بیشتر شوند میتوان گفت که یک کتابخانه در زبان برنامهنویسی پایتون داریم. در این مطلب از مجله فرادرس درباره همه مراحل ساخت کتابخانه در پایتون از قبیل بستهبندی و ارسال پروژه به «PyPI»، ساخت فایلهای پروژه، ساخت فایل مخصوص setup.py
و در آخر بارگذاری پروژه بر روی «PyPI» نوشتهایم. اولین قدم در این فرایند درک این نکته است که ساخت کتابخانه در پایتون چگونه بهنظر میرسد.
یکی از سریعترین راهها برای به اشتراکگذاری کتابخانهها یا ماژولها، بارگذاری این فایلهای پایتونی در وبسایت مخصوص فهرست بستههای پایتون «PyPI» یا Github یا هر دو گزینه بهصورت همزمان است. بعضی از سازمانها همه کدهایشان را برای خودشان نگه میدارند. به این نوع برنامهها، برنامهی «متن بسته» (Closed-Source) میگویند. اما پایتون یک زبان برنامهنویسی «متن باز» (Open-Source) است. علاوه بر این بیشتر پکیجها و ماژولهای پایتونی که از سایت مخصوص فهرست بستههای پایتون «PyPI» دانلود میکنیم نیز متن باز و رایگان هستند.
مراحل ساخت کتابخانه در پایتون چیست؟
ساخت کتابخانه در پایتون عملیات پیچیدهای ندارد. اما لازم است که نسبت به عناصر این عملیات و مراحل کار بهطور کامل اشراف داشته باشیم. عناصر مربوط به عملیات ساخت کتابخانه شامل ماژولها میشوند و مراحل ساخت کتابخانه در پایتون شامل موارد زیر است.
- ساخت فایلهای پروژه
- ساخت فایل Setup.py
- ساخت wheel در پایتون
- بارگذاری پکیجها در سایت PyPI.org
ابتدا با عنصر ماژول آشنا میشویم و سپس در ادامه متن همه مراحل ساخت کتابخانه را به صورت شفاف و دقیق بررسی خواهیم کرد.
ماژول در پایتون چیست؟
باید به این نکته توجه کنیم که هر فایل پایتونی ساخته شده در واقع ماژولی است که میتوانید در سایر برنامهها یا فایلها ایمپورت کنیم. ماژولها دارای امکانات و ابزارهایی هستند که میتوانند مسائل مختلف برنامهنویسی را حل کنند. با استفاده از ماژولها در برنامههایمان دیگر نیازی به کد نویسیهای طولانی برای انجام هر کاری نیست. ماژولها برنامه را خواناتر و کوتاه میکنند.
میتوانیم با اضافهکردن هر کدام از مثالهای پیادهسازی شده در این مطلب در هر فایل پایتونی این اصل را امتحان کنیم. سعی کنید این مثالها را در سیستم خود پیادهسازی کنید و در فایلهای دیگر ایمپورت کنید. برای مثال، اگر فایل پایتونی به نام a.py
داشته باشید و بعد از آن فایل دیگری به نام b.py
بسازید، میتوانید فایل a
را در فایل b
با استفاده از خط کد import a
وارد کنید.
البته که مطلب بیان شده مثال بسیار سادهای است. در عوض برای این مطلب، ماژول سادهای میسازیم که چند تابع پایهای از ریاضیات را درون خود دارد. فایل را بهنام arithmetic.py
نامگذاری میکنیم و سپس کد آمده زیر را در آن وارد میکنیم.
1# arithmetic.py
2
3def add(x, y):
4 return x + y
5
6def divide(x, y):
7 return x / y
8
9def multiply(x, y):
10 return x * y
11
12def subtract(x, y):
13 return x - y
این کد بسیار ساده است. در کد بالا هیچ سیستم مدیریت خطایی پیادهسازی نشده و این به معنی آن است که میتوانیم عملیات تقسیم بر صِفر را نیز انجام دهیم. اجرای این عملیات باعث رخدادن یکی از استثنائات ریاضی میشود. بههمچنین میتوانیم انواع داده ناسازگار را نیز به این توابع ارسال کنیم. برای مثال میتوانیم نوع داده رشته و عدد صحیح را به عنوان پارامترهای هر یک از این توابع ارسال کنیم. این مسئله خود میتواند باعث بروز نوع دیگری از خطاهای استثنا شود.
بههرحال برای رسیدن به اهداف یادگیری این مطلب، کد بالا کافی است. میتوان با ساخت فایل آزمایشی ثابت کرد که فایل حاوی کد بالا قابل ایمپورت شدن است. فایل جدیدی به نام test_arithmetic.py
ایجاد میکنید و کد زیر را به آن اضافه میکنیم.
1# test_arithmetic.py
2
3import arithmetic
4import unittest
5
6class TestArithmetic(unittest.TestCase):
7
8 def test_addition(self):
9 self.assertEqual(arithmetic.add(1, 2), 3)
10
11 def test_subtraction(self):
12 self.assertEqual(arithmetic.subtract(2, 1), 1)
13
14 def test_multiplication(self):
15 self.assertEqual(arithmetic.multiply(5, 5), 25)
16
17 def test_division(self):
18 self.assertEqual(arithmetic.divide(8, 2), 4)
19
20if __name__ == '__main__':
21 unittest.main()
فایل آزمایشی خود را در همان پوشه بهعنوان ماژول ذخیره میکنیم. الان با استفاده از فرمان آمده در پایین، میتوانیم این کد را اجرا کنیم.
1$ python3 test_arithmetic.py
2....
3----------------------------------------------------------------------
4Ran 4 tests in 0.000s
5
6OK
کد بالا نشان میدهد که میتوانیم فایل arithmetic.py
خود را به عنوان ماژول در هر فایل دیگری ایمپورت کنیم. علاوه بر این آزمایشهای انجام شده نشان میدهند که این توابع ابتدایی در کد کار میکنند. میتوانیم این آزمایشها را با اجرای عملیات تقسیم بر صفر و ترکیب نوع دادههای رشته و «عدد صحیح» (Integer) بیشتر بررسی کنیم. چنان شکلی از آزمایشها بهطور قطع شکست میخورند. پس از رد شدن در تستهای نرمافزاری میتوانیم از «روش توسعه تست محور» (Test Driven Development Methodology) برای رفع خطاهای نرمافزاری پیروی کنید.
افزایش مهارت برنامه نویسی با فرادرس
ساخت کتابخانه در پایتون یکی از تخصصهایی است که بعد از حرفهای شدن در کدنویسی به آن نیاز خواهید داشت. اما در هر صورت در اوایل راههم شاید شرایط استثنایی بهوجود بیاید که مجبور به وارد کردن فایلهای پایتون در یکدیگر شویم. به هر حال، در صورتی که در کار با پایتون از مراحل مقدماتی و ساده عبور کرده و به دنبال افزایش مهارت خود هستید یکی از بهترین راهها استفاده از دورههایی هست که توسط مدرسان حرفهای آماده شده است.
پس بهترین راه استفاده از فیلمهای آموزشی است. چراکه فیلمهای آموزشی نسبت به دورههای حضوری مزیتهای بیشتری دارند. از این رو سایت فرادرس فیلمهای بسیار خوبی با کیفیت عالی در روش آموزش و متناسب با همه سطوح دانش را برای همه مخاطبان -از تازه کار گرفته تا مخاطبان حرفهای- فراهم کرده است. این فیلمهای آموزشی با دقت و حساسیت بالایی در انتخاب استاد و روش تدریس و حتی کیفیت مطالب مورد تدریس تولید شدهاند. در صورتی که علاقهمند به افزایش مهارت خود در زبان برنامهنویسی پایتون هستید، فیلمهای آموزشی فرادرس که لینک آنها در زیر آمده، میتوانند گزینه خوبی برای ادامه مسیر تسلط بر پایتون باشند.
کتابخانه در پایتون چیست؟
کتابخانههای پایتونی به مجموعهای از یک یا چند فایل گفته میشود که شامل توابع یا امکانات خاصی هستند. با وارد کردن این کتابخانهها در محیط کدنویسی میتوانیم از این امکانات استفاده کنیم. کتابخانههای پایتون برای استفاده سایر توسعه دهندگان به اشتراک گذاشته میشوند. این به اشتراک گذاشتن از طریق آپلود کردن فایلهای کتابخانه در وبسایت اختصاصی پکیجهای پایتون «PyPI» یا سایت گیتهاب انجام میگیرد.
ساخت کتابخانه در پایتون بهطور معمول با نامگذاری دایرکتوری فایلها بهجای خود فایل شروع میشود. سپس درون آن دایرکتوری باید فایل اختصاصی __init__.py
را ایجاد کنیم. وقتی که پایتون فایل __init__.py
را ببیند متوجه میشود که این پوشه را میتوان به عنوان پکییج پایتونی در فایلهای برنامهنویسی پایتون ایمپورت کرد.
روشهای مختلفی برای تبدیل کردن فایل arithmetic.py
به پکیج پایتونی وجود دارد. آسانترین راه انتقال کدهای درون فایل arithmetic.py
به فایل arithmetic/__init__.py
است. مراحل انجام این کار در ادامه بهطور خلاصه بیان شده است.
- در ابتدا پوشهای بهنام arithmetic
ایجاد کنید.
- با دستورات move
یا copy
کدهای فایل arithmetic.py
را در فایل arithmetic/__init__.py
کپی کنید.
- اگر در مرحله قبل از دستور copy
استفاده کرده بودید، فایل arithmetic.py
را پاک کنید.
- فایل test_arithmetic.py
را اجرا کنید.
مرحله آخر در مراحل بالا به شدت مهم است. اگر برنامههایی که برای آزمایش ماژول طراحی شدهاند با موفقیت به نتیجه رسیدند میفهمیم که فرایند تبدیل ماژول به کتابخانه پایتونی با موفقیت به انجام رسیده است. برای اینکه بتوانیم کتابخانه طراحی شده را آزمایش کنیم در ویندوز باید درگاه «Command Prompt» را باز کنیم و در سیستم عامل Mac یا Linux نیز باید ترمینال را باز کنیم. سپس به دایرکتوری حاوی پوشه arithmetic
حرکت میکنیم، اما وارد این پوشه نمیشویم. الان باید در پوشهای قرار داشته باشیم که فایل test_arithmetic.py
وجود داشته باشد. در این محل است که میتوان فایل test_arithmetic.py
را اجرا کرد تا در نهایت ببینیم که آیا تلاشهای ما موفقیت آمیز بوده یا نه.
شاید ساده انگارانه بهنظر برسد که بهسادگی همه کدهای خود را درون فایل __init__.py
قرار دهید. اما در واقع این فایل میتوانند چندهزار خط کد را مدیریت کند.
روش دوم برای ساخت کتابخانه در پایتون با استفاده از فایل arithmetic.py
تقریبا شبیه به روش اول است، اما شامل استفاده از فایلهای بیشتری نسبت به فایل __init__.py
است. در پروژههای واقعی، کدها را در پوشههایی مانند functions
و classes
و غیره قرار میدهیم. هر سری از فایلها به نحوی گروهبندی میشوند، شاید فایلی برای مدیریت همه استثناهای سفارشی پکیج خودمان، فایلی برای ابزارهای کاربردی معمولی پکیج و فایلی برای عملکرد اصلی پکیج در نظر گرفته شوند.
در مثال مورد استفاده این مطلب، ۴ تابع موجود در فایل arithmetic.py
را به شکل فایلهای برای هر تابع بهصورت جدا از هم تقسیم میکنیم. در ادامه کار هر تابع را از فایل __init__.py
به فایل خودش انتقال میدهیم. ساختار پوشه در نهایت باید شکل فایل آمده در زیر شود.
1arithmetic/
2 __init__.py
3 add.py
4 subtract.py
5 multiply.py
6 divide.py
در فایل __init__.py
میتوانیم کدهای زیر را اضافه کنیم.
1# __init__.py
2from .add import add
3from .subtract import subtract
4from .multiply import multiply
5from .divide import divide
بعد از اینکه این تغییرات را در فایلهای خود اعمال کردیم باید به ادامه کار فکر کنیم. در ادامه کار، تستهای طراحی شده، برای برنامههای خود را اجرا میکنیم. اگر بعد از این تغییرات بازهم آزمایشهایمان با موفقیت انجام شوند یعنی API این پکیج مشکلی ندارد.
در این مرحله کتابخانه arithmetic
که طراحی کردیم فقط برای کدهای دیگر پایتون داخل همان پوشه مانند فایل test_arithmetic.py
در دسترس است. برای اینکه این کتابخانه را در کل پروژه پایتونی خود یا در کدهای دیگر پایتون نیز در دسترس قرار دهیم، میتوانیم از ماژول sys
در پایتون استفاده کنیم تا پکیج خود را به «مسیر جستوجو» (Search Path) پایتون اضافه کنیم. مسیر جستوجو، همان مسیری است که پایتون برای یافتن ماژولهای وارد شده با کلمه کلیدی Import، دنبال میکند. با اعمال تابع print()
بر روی تابع sys.path()
میتوان مسیرهای مورد جستوجوی پایتون را مشاهده کرد.
در ادامه فرض میکنیم که پوشه arithmetic
در آدرس /Users/michael/packages/arithmetic
قرار دارد. برای اینکه این مسیر را به مسیر جستوجوی پایتون اضافه کنیم، میتوان از تکه کد زیر استفاده کرد.
1import sys
2
3sys.path.append("/Users/michael/packages/arithmetic")
4import arithmetic
5
6print(arithmetic.add(1, 2))
این کد پوشه arithmetic
را به مسیر جستوجوی پایتون اضافه میکند. پس از این به بعد میتوانیم این پکیج را در فایلهای کد خود با استفاده از کلمه Import، وارد و استفاده کنیم. البته که این کار غیراصولی است. اگر بتوانیم پکیج خود را با استفاده از pip نصب کنیم خیلی بهتر است. بنابراین مجبور نخواهیم شد که برای هر ماژول یک بار مسیر جستوجوی پایتون را بهم بریزیم.
در ادامه این مطلب روش بستهبندی فایلهای پروژه برای ذخیره در فهرست پکیجهای پایتونی سایت «PyPI» را بررسی خواهیم کرد.
بسته بندی و ارسال پکیچ به PyPI
وقتی نوبت به ساخت پیکیج حرفهای برای ذخیره در فهرست پکیجهای پایتونی سایت «PyPI» میرسد، به چند فایل اضافی احتیاج خواهیم داشت.
دستور العملهای رسمی ساخت پکیج توصیه میکنند که دایرکتوری با ساختاری شبیه به ساختار زیر را پیادهسازی کنید.
1my_package/
2 LICENSE
3 README.md
4 arithmetic/
5 __init__.py
6 add.py
7 subtract.py
8 multiply.py
9 divide.py
10 setup.py
11 tests/
پوشه مربوط به آزمایشهای کتابخانه tests
میتواند خالی بماند. این پوشه جایی است برای نگهداری آزمایشهایی که بر روی قطعات مختلف کتابخانه کدنویسی شدهاند. بیشتر توسعه دهندگان برای آزمایشهایشان از فریمورکهای «Unittest» یا «Pytest» استفاده میکنند. در این مثال میتوانیم این پوشه را بهصورت خالی رها کنیم.
برای اینکه روی پایتون تسلط بیشتری پیدا کنیم و درباره کار با کتابخانههای پایتون تجربه بیشتری بدست بیاوریم، میتوانیم از فیلم آموزشی مربوط به کار با ماژولهای کتابخانه استاندارد پایتون در فرادرس استفاده کنیم. این کتابخانه به همراه ماژولهایش تقریبا رایجترین و پرکاربردترین کتابخانه پایتون است.
در بخش بعدی به بقیه فایلهایی که برای ساخت کتابخانه در پایتون باید ساخته شود خواهیم پرداخت.
ساخت فایل های پروژه
فایل LICENSE
جایی است که مجوزها، قوانین یا لایسنس خاصی که پکیج شما برطبق آن ارائه شده را معرفی میکند. اطلاعات دون فایل LICENSE
به کاربران میگویند که با پکیج شما چه کارهایی را حق دارند و چه کارهایی را حق ندارند انجام دهند. مجوزهای بسیار گوناگونی وجود دارند که میتوانیم استفاده کنیم. لایسنسهای GPL و MIT جزو لایسنسهای بسیار پرطرفدار و رایج هستند.
فایل README.md
حاوی توضیحی درباره پروژه است که به زبان غالب «Markdown» نوشته شده است. در این فایل درباره پروژه خودمان مطالبی را خواهیم نوشت. این مطالب شامل هر اطلاعاتی از قبیل نیازمندیهای احتمالی برای نصب کتابخانهمان نیز میشود. در این فایل میتوانیم دستورالعمل مورد نیاز برای نصب را به همراه چند مثال درباره کاربرد کتابخانه ارئه بدهیم. زبان غالب Markdown ابزاری چندکاره است و حتی امکان برجستهسازی سینتکسهای کدها را نیز فراهم میسازد.
فایل دیگری که باید راهاندازی شود فایل setup.py
است. این فایل پیچیدگیهای بیشتری دارد. بخش بعد را به این فایل اختصاص دادهایم. در صورتی که کتابخانه خود را به درستی ایجاد کنید فرایند نصب کتابخانه نیز به سادگی ممکن است. اما گاهی شاید در اجرای این عملیات به مشکل بر بخوریم. برای اینکه از اجرای صحیح عملیات نصب کتابخانه مطمئن شویم پیشنهاد میکنیم که مطلب راهنمای کامل و ساده نحوه نصب کتابخانه در پایتون را که در مجله فرادرس تهیه شده بهطور کامل مطالعه کنید.
ساخت فایل setup.py
از ضروریترین اقدامات برای ساخت کتابخانه در پایتون، ساخت فایل setup.py
است. در هر کتابخانه، فایل مخصوصی به نام setup.py
وجود دارد. این فایل به عنوان «اسکریپت سازنده» (Build Script) برای ورژنهای مختلف پایتون بهکار میرود. این فایل توسط ماژول setuptools
استفاده میشود. ماژول setuptools
در واقع برای ساخت کتابخانه در پایتون بهکار گرفته میشود.
با استفاده از فایل setup.py
میتوانیم یک wheel
در پایتون بسازیم. هر wheel
فایل بایگانی فشردهای در فرمت ZIP است. نامگذاری wheel
-ها دارای قائده مشخصی است و در کنارشان افزونهای با پسوند .whl
قرار دارد. فایل setup.py
شامل هر چیز ضروری میشود که برای نصب پکیج لازم است. این فایل را میتوان به عنوان نسخه فشردهای از کدها در نظر گرفت. ابزار pip میتواند از این فایل را از فشردگی خارج کند و در سیستم هر کاربری نصب کند. wheel
-ها از استاندارد PEP 376 پیروی میکنند.
وقتی که مطالعه همه این اسناد را به پایان رساندید میتوانید فایل setup.py
خود را راه اندازی کنید و کد زیر را به این فایل بیافزایید.
1import setuptools
2
3with open("README.md", "r") as fh:
4 long_description = fh.read()
5
6setuptools.setup(
7 name="arithmetic-YOUR-USERNAME-HERE", # Replace with your own username
8 version="0.0.1",
9 author="Mike Driscoll",
10 author_email="[email protected]",
11 description="A simple arithmetic package",
12 long_description=long_description,
13 long_description_content_type="text/markdown",
14 url="https://github.com/driscollis/arithmetic",
15 packages=setuptools.find_packages(),
16 classifiers=[
17 "Programming Language :: Python :: 3",
18 "License :: OSI Approved :: MIT License",
19 "Operating System :: OS Independent",
20 ],
21 python_requires='>=3.6',
22)
اولین قدم در کد بالا ایمپورت کردن ماژول setuptools
است. بعد از آن فایل README.md
را میخوانیم و در متغیری برای استفاده در کدهای بعدی نگهداری میکنیم. آخرین تکه کد، بیشترین قسمت کد را در بر میگیرد. در این بخش متد setuptools.setup()
را فراخوانی میکنیم. این متد میتواند چندین آرگومان کاملا متفاوت از هم را دریافت کند. مثال بالا فقط نمونهسازی سادهای از چیزهایی است که میتوانیم به این متد ارسال کنیم.
بیشتر آرگومانهای این متد گویا هستند و خودشان را توضیح میدهند. بنابراین بر روی گزینههای مبهمتر تمرکز خواهیم کرد. پارامترهای مربوط به آرگومان packages
، فهرستی از پکیجهایی هستند که برای کار کردن کتابخانه طراحی شده ما ضروریاند. در این مورد از متد find_packages()
استفاده میکنیم تا پکیجهای ضروری بهصورت خودکار پیدا شوند. آرگومان classifiers
برای ارسال metadata-های اضافی به pip استفاده میشود. برای مثال، این کد به pip میگوید که کتابخانهی طراحی شده با پایتون نسخه ۳ سازگار است.
الان که توانستیم فایل setup.py
را نصب کنیم، برای ساخت wheel
در پایتون آماده شدهایم.
ساخت wheel در پایتون
یکی از الزامات بعد از ساخت کتابخانه در پایتون، ایجاد فایل wheel
است. البته فایل wheel
نه برای ساخت که برای ایجاد امکان دانلود این کتابخانه از اینترنت لازم است. فایل setup.py
برای ساخت wheel
در پایتون استفاده میشود. ایده خوبی است که همیشه قبل از شروع کار از نصب بودن آخرین نسخه ماژولهای setuptools
و wheel
مطمئن شویم. پس قبل از اینکه wheel
خودمان را بسازیم، باید دستور زیر را در خط فرمان اجرا کنیم.
python3 -m pip install --user --upgrade setuptools wheel
اگر از پکیجهایی که بر روی سیستم بهصورت نصب شده موجود هستند نسخه جدیدتری تولید شده باشد، کد بالا پکیج مورد نظر را بهروزرسانی میکند. الان آمادهایم که wheel
خودمان را ایجاد کنیم.
- در ابتدا پنجره «خط فرمان» (Command Prompt) یا یکی از برنامههای کاربردی ترمینال را -بسته به سیستم عامل- باز میکنیم.
- سپس به سمت پوشهای که حاوی فایل setup.py
است حرکت میکنیم.
- وقتی به پوشه گفته شده رسیدیم کد زیر را در خط فرمان اجرا میکنیم.
python3 setup.py sdist bdist_wheel
کد بالا مقدار زیادی متن تولید میکند. اما وقتی که اجرای این کد به پایان رسید، میتوانیم پوشه جدید به نام dist
ببینیم -در همان مکانی که کد اجرا شده است- این پوشه شامل دو فایل زیر میشود.
arithmetic_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl arithmetic-YOUR-USERNAME-HERE-0.0.1.tar.gz
فایل tar.gz
بایگانی برای منبع اپلیکیشن است. به این معنا که کد منبع پایتون مربوط به کتابخانه طراحی شده را درون خودش نگهداشته است. سایر کاربران در صورتی که نیاز داشته باشند، میتوانند با استفاده از فایل بایگانی مرجع، پکیج مورد نظر را بر روی کامپیوترهای خودشان بسازند. فرمت .whl
بایگانی است که توسط pip برای نصب پکیج طراحی شدهمان بر روی کامپیوترهای کاربران استفاده میشود.
در صورتی که بخواهید میتوانید wheel
-ها را بهشکل مستقیم، با استفاده pip در سیستم خودتان نصب کنید. به کد زیر توجه کنید. در این کد مثال کامل و سادهای از استفاده این دستورات آمده است.
python3 -m pip install arithmetic_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
اما روش معمولی به این شکل است که در ابتدا پکیج خود را در وبسایت اختصاصی «شاخص بستههای پایتون» (Python Package Index | PyPI) بارگذاری میکنیم و سپس میتوانیم به دانلود و نصب پکیج بر روی سیستم خود اقدام کنیم.
در ادامه مطلب روش بارگذاری پکیج اختصاصی خودمان را در وبسایت «PyPI» بررسی کردهایم.
بارگذاری پکیج ها در سایت PyPI.org
بعد از ساخت کتابخانه در پایتون، نوبت به بارگذاری این کتابخانه در سایت PyPI.org
میرسد. برای این کار نیز اولین قدم، ساخت اکانت در سایت test.PyPI.org
است. سایت «Test.PyPI» برای این است که پکیج خود را آزمایش کنیم. اول ببینیم که آیا اصلا امکان بارگذاری در سایت سرور آزمایشی را دارد یا نه. بعد از آن بررسی میکنیم که آیا میتوان پکیج را صحیح و سالم از همین سایت سرور آزمایشی دانلود کرد و در سیستم نصب کرد. برای ساخت اکانت در این سایت باید در ابتدا وارد سایت شوید. سپس بهسادگی از روی راهنمای خود سایت در بخش Register اقدام کنید.
بعد از اینکه در این سایت ثبت نام کردیم، باید یک توکن API مخصوص سایت «PyPI» ایجاد کنیم. این توکن API کمک میکند که کتابخانهها را در امنیت کامل بارگذاری کنیم. برای گرفتن توکن API مخصوص به خود لازم است به لینک زیر وارد شویم.
https://test.PyPI.org/manage/account/#api-tokens
میتوانیم که دامنه دسترسی توکن را محدود کنیم اما درباره این پروژه جدید نیازی به انجام این کار نداریم. حتما باید دقت شود که قبل از بستن این صفحه، از توکن خود کپی تهیه کنیم. این توکن را در جای امنی ذخیره میکنیم. وقتی که صفحه بسته شد، دیگر امکان بازیابی توکن وجود نخواهد داشت. در عوض، مجبور خواهیم بود که توکن API جدیدی را بسازیم.
الان که ثبت نام کردیم و توکن API خودمان را داریم باید پکیج twine
رو هم دانلود کنیم. از twine
برای بارگذاری پکیج طراحی شده خودمان در سایت «PyPI» استفاده خواهیم کرد. برای اینکه twine
را نصب کنیم از فرمان pip بهشکلی که در ادامه آمده استفاده میکنیم.
python3 -m pip install --user --upgrade twine
بعد از نصب شدن twine
در سیستم، میتوانیم با استفاده از فرمان زیر کتابخانه خود را در سرورس آزمایشی «Test PyPI» نصب کنیم.
python3 -m twine upload --repository testPyPI dist/*
توجه کنید که باید کد بالا را از دورن پوشهای که حاوی فایل setup.py
است اجرا کنیم. چراکه این فرمان همه فایلهای درون پوشه dist
را در سرور آزمایشی «Test PyPI» بارگذاری میکند. وقتی که این فرمان را اجرا کنیم، با نشان دادن پیغامی، برای گرفتن نامکاربری و کلمه عبور درخواست میکند. در اینجا باید از «__token__» استفاده کنیم. کلمه عبور همان مقدار token است که قبلا از «PyPI» گرفتهایم.
وقتی که فرمان بالا را اجرا کنیم، در کنسول ترمینال، خروجی به شکل زیر را باید ببینم.
1Uploading distributions to https://test.pypi.org/legacy/
2Enter your username: [your username]
3Enter your password:
4Uploading arithmetic_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl
5100%|?????????????????????| 4.65k/4.65k [00:01<00:00, 2.88kB/s]
6Uploading arithmetic_YOUR_USERNAME_HERE-0.0.1.tar.gz
7100%|?????????????????????| 4.25k/4.25k [00:01<00:00, 3.05kB/s]
بعد از این مرحله باید بتوانیم کتابخانه طراحی شده خود را روی سرور مخصوص پکیجهای آزمایشی «Test PyPI» در آدرس URL زیر ببینیم.
https://test.PyPI.org/project/arithmetic_YOUR_USERNAME_HERE
الان میتوانیم امکان نصب شدن پکیج خودمان را از روی سایت «Test PyPI» با استفاده از فرمان زیر آزمایش کنیم.
1python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps arithmetic-YOUR-USERNAME-HERE
اگر همه چیز بهصورت صحیح کار کنند الان باید پکیج arithmetic
را بهصورت نصب شده بر روی سیستم خود داشته باشید. در این مطلب روش بستهبندی فایلها و پوشههای حاوی دادههای کتابخانه خود را برای بارگذاری در سایت «Test PyPI» نشان دادیم. وقتی که شما هم با تکرار این مراحل تایید کردید که این روش کار میکند، نوبت به پیروی از مراحل زیر میرسد. مراحل زیر قدم به قدم روش ساخت کتابخانه در پایتون و بارگذاری این کتابخانه سالم و تایید شده را بر روی سایت واقعی «PyPI» آموزش میدهند.
- برای پکیج خود باید نامی یکتا و قابل به یادسپاری انتخاب میکنیم.
- برای خود در سایت https://PyPI.org
اکانت ایجاد میکنیم.
- از کد twine upload dist/*
برای بارگذاری پکیج خود استفاده میکنیم و نام کاربری و رمز عبور اکانت خود را در سایت «PyPI» وارد میکنیم. در این حالت نیازی به استفاده از پرچم –repository
در زمان بارگذاری دادهها در سایت «PyPI» نیست. زیرا در این سایت این سرور بهصورت پیشفرض انتخاب شده است.
- با استفاده از کد pip install your_unique_package_name
پکیج خود را از سایت اصلی «PyPI» دانلود کرده و در سیستم نصب میکنیم.
الان میتوانیم که کتابخانه ساخت خودمان را بر روی سایت شاخص پکیجهای پایتون بارگذاری کنیم. هر کسی از هرجای جهان که به علمیات ارائه شده توسط ما نیاز داشت، میتواند این کتابخانه را دانلود کرده و استفاده کند.
تقویت مهارت های پایتونی
پایتون یک زبان برنامهنویسی قدرتمند و پرکاربرد است که در حوزههای مختلفی از توسعه نرمافزار تا علم داده و ساخت اپلیکیشنهای اینترنتی مورد استفاده قرار میگیرد. بعد از اینکه مهارتهای پایتونی خود را در سطح قابل قبولی ارتقا دادید، بهترین کار آماده شدن برای ورود به بازار کار است. به این منظور به شما توصیه میکنیم که فیلمهای آموزشی مربوط به کاربردهای پایتون را در پروژههای واقعی تماشا کنید. این فیلمها توسط وبسایت آموزشی فرادرس با بیشترین کیفیت ممکن تولید شدهاند و روی واقعیترین پروژههای بهروز کار میکنند.
جمع بندی
ماژولها و کتابخانههای پایتون، همان فایلهای کمکی هستن که ما در برنامههایمان import میکنیم. این پکیجها به روشهای گوناگونی بلاکهای برنامههای ما را میسازند. در این مطلب از مجله فرادرس درباره روش ساخت ماژول، ساخت پکیج، بستهبندی پروژهای برای ارسال به «PyPI»، ساخت فایلهای پروژه، ساخت فایل setup.py
و در نهایت بارگذاری فایلها بر روی سایت «PyPI» صحبت کردیم و روش انجام همه این عملیات را یاد گرفتیم.
در این مقطع دیگر به این فکر نمیکنیم که ماژولها و پکیجهای پایتونی چه هستند. بلکه درباره روش ساخت کتابخانه در پایتون و توزیع این بستههای ابزاری بر روی وبسایت شاخص پکیجهای پایتون هم اطلاعات کافی داریم. الان دیگر شما و هر توسعهدهنده پایتونی دیگری میتواند پکیجی که بر روی این سایت بارگذاری شده را دانلود و نصب کند. اکنون ما هم عضو جامعه تولیدکنندگان و نگهدارندگان پکیجها شدهایم.
source