پایتون: ایجاد یک بسته قابل نصب PIP

ساخت وبلاگ

این یک راهنمای سریع برای بسته بندی پایتون با تمرکز خاص در ایجاد یک بسته PYPI است که کاربران را قادر می سازد تا بسته را "PIP" نصب کنند. این سند به بخش هایی تقسیم می شود تا خوانندگان به راحتی بخش هایی از فرآیند را که قبلاً با آنها آشنا هستند ، پرش کنند. همه به جز بخش پایانی (بارگذاری در PYPI) ، می تواند به عنوان یک تمرین برای درک بسته بندی پایتون و آزمایش روند ، بدون انتشار بسته ای در توزیع رسمی PYPI انجام شود.

برای مراجعه دقیق تر در مورد ایجاد بسته ، به وب سایت رسمی بسته بندی پایتون (PYPA) مراجعه کنید.

توجه: برای جلوگیری از سردرگمی با PYPY (اجرای پایتون) باید از PYPI "PIE P I" تلفظ شود.

پیپ چیست؟

PIP یک سیستم مدیریت بسته است ، که به طور خاص برای نصب بسته های پایتون از شاخص بسته بندی Python میزبان اینترنت (که معمولاً با عنوان PYPI شناخته می شود) طراحی شده است. این متداول ترین روش برای نصب بسته های پایتون است. به عنوان مثال.

این بسته اکنون می تواند در اسکریپت های پایتون وارد شود. در صورت داشتن امتیازات ریشه ای ، یا ضمیم ه-کاربر برای نصب در زیر دایرکتوری خانه خود ، ممکن است لازم باشد به عنوان sudo اجرا کنید (اغلب این کار زیر خانه $/. local خواهد بود).

توجه: PIP3 برای نصب بسته های Python3 استفاده می شود ، اما در بعضی از محیط ها PIP ممکن است به PIP3 اشاره کند ، دقیقاً همانطور که پایتون ممکن است به Python3 اشاره کند. می توانید از کدام PIP برای بررسی این استفاده کنید. برای این سند ، نمونه ها دستور را به سادگی به عنوان پیپ نشان می دهند.

نکته: برای بارگیری یک نسخه خاص از یک بسته:

نکته: برای پیدا کردن چه نسخه هایی در دسترس است:

این در اصل سعی در نصب نسخه ای است که وجود ندارد و باعث می شود PIP در لیست نسخه های موجود لیست شود.

نکته: برای دیدن اینکه چه نسخه ای در حال حاضر نصب شده است:

اطلاعات بسته بندی ، از جمله مکان نصب ، را می توان با اجرای مترجم پایتون بدست آورد:

ایجاد یک بسته پایتون

در این مقاله مروری بر نحوه ایجاد یک بسته قابل نصب پایتون ارائه شده است.

توجه داشته باشید در مورد ابهام: اصطلاح بسته می تواند به یک بسته قابل نصب پایتون در یک پروژه (دایرکتوری حاوی یک پرونده __init__. py) مراجعه کند. همچنین می تواند به معنای بسته توزیع باشد که به کل قسمت توزیع شده پروژه (مانند توزیع منبع - یا "تاربال") اشاره دارد. چنین بسته ای ممکن است شامل چندین بسته/بسته های فرعی پایتون باشد. در بیشتر موارد ، زمینه باید برای تمایز کافی باشد.

یک پروژه پایتون از یک فهرست اصلی با نام پروژه تشکیل شده است. در جایی در داخل این دایرکتوری قرار خواهد گرفت که بسته اصلی نصب را تشکیل می دهد. بیشتر اوقات این نام دارای نام پروژه است (این اجباری نیست اما چیزها را کمی ساده تر می کند). در داخل آن فهرست بسته ، در کنار پرونده های Python خود ، پرونده ای به نام __init__. py ایجاد کنید. این پرونده می تواند خالی باشد و فهرست را به عنوان یک بسته پایتون نشان می دهد. هنگامی که PIP نصب می کنید ، این فهرست نصب می شود و قابل وارد می شود.

به عنوان مثال. یک پروژه ساده ممکن است این ساختار را داشته باشد:

در دایرکتوری root ، به یک پرونده setup. py نیاز خواهید داشت که حاکم بر نصب بسته شما خواهد بود. بسته Setuptools برای این کار توصیه می شود (Distutils داخلی یک گزینه قدیمی تر است).

شرط اصلی در Setup. py تماس با روال تنظیم ، ارائه اطلاعات پروژه به عنوان آرگومان های کلمه کلیدی است. اطلاعات زیادی را می توان ارائه داد ، اما موارد زیر نمونه ای مینیمالیستی است.

اطلاعات بیشتر در مورد گزینه های تنظیم را می توان در: دستورالعمل های بسته بندی PYPA و در عین حال اطلاعات دقیق تر و به روز در: مرجع دستور setuptools:

طبقه بندی کننده ها کاربردی نیستند ، آنها برای مستندات هستند و پس از بارگذاری در صفحه PYPI ذکر می شوند. این متعارف است که نسخه های پایتون را در این نسخه پشتیبانی کنید. لیست کاملی از طبقه بندی کننده ها در: لیست طبقه بندی کننده های PYPI در دسترس است

با ایجاد یک setup. py ، نصب را با پیپ آزمایش کنید. در ریشه ریشه:

این به جای نصب پیش فرض Python Setup. py که از Easy_install استفاده می کند ، توصیه می شود. اگر نصب موجود را دارید و می خواهید اطمینان حاصل کنید که بسته و وابستگی ها به روز شده اس ت-به روزرسانی

برای حذف (از نام بسته استفاده کنید):

توجه: حذف نصب قابل اعتماد یکی از مزیت های استفاده از Setuptools در Distutils است.

شایان ذکر است که نسخه موجود در setup. py شما ویژگی بسته __version__ را ارائه نمی دهد. یک مکان مشترک برای تهیه این امر به همراه سایر داده های متا برای بسته بندی در داخل __init__. py است. این کار هر زمان که ماژول وارد شود اجرا می شود. به عنوان مثال: __init__. py ممکن است حاوی:

اگر اکنون PIP دوباره نصب کرده و مترجم Python را اجرا کنید ، باید بتوانید به این متغیرها دسترسی پیدا کنید:

این مسئله مشکل داشتن دو مکان را در نگه داشتن نسخه ایجاد می کند ، که باید با هر برچسب انتشار ایجاد شده نیز مطابقت داشته باشد (به عنوان مثال در GIT). رویکردهای مختلفی برای استفاده از یک شماره نسخه واحد وجود دارد. به https://packaging. python.org/guides/single-sourcing-package-version مراجعه کنید

اگر می خواهید زیر بسته های زیر را ایجاد کنید ، اینها باید در حالت ایده آل دایرکتوری ها در داخل بسته اصلی باشند (نقشه برداری مجدد از مکان های دیگر با استفاده از آرگومان pack_dir در تنظیم امکان پذیر است اما این می تواند مشکلی در نصب نصب ایجاد کند. زیر بسته ها نیز نیاز دارند__init__. py در فهرست.

ایجاد توزیع منبع

توصیه می شود که تمام پروژه های پایتون توزیع منبع را ارائه دهند.

PYPI دارای داده های مورد نیاز خاص است که Setup. py باید ارائه دهد. برای بررسی سریع آیا پروژه شما این استفاده از داده ها را دارد:

اگر هیچ چیز گزارش نشده باشد ، بسته شما قابل قبول است.

توزیع منبع ایجاد کنید. از فهرست اصلی خود:

این یک Dist/ Distory حاوی یک بایگانی فشرده شده از بسته (به عنوان مثال - . tar. gz در لینوکس) ایجاد می کند. این پرونده توزیع منبع شماست. اگر به طور خودکار حاوی آنچه می خواهید نیست ، ممکن است استفاده از یک فایل مانیفست را در نظر بگیرید (به https://docs. python.org/distutils/sourcedist مراجعه کنید).

توجه: دایرکتوری . egg-info نیز در فهرست ریشه شما حاوی متا داده در مورد توزیع شما ایجاد می شود. اگر خواسته نشود ، این امر با اطمینان می تواند حذف شود (علی رغم این پسوند ، حتی اگر بسته ای با فرمت تخم مرغ ایجاد نکرده اید) تولید می شود.

ایجاد توزیع چرخ

به صورت اختیاری ممکن است توزیع چرخ ایجاد کنید. این یک توزیع ساخته شده برای سکوی فعلی است. از چرخ ها باید به جای فرمت قدیمی تخم مرغ استفاده شود. در نظر داشته باشید ، هرگونه برنامه افزودنی برای سکوی داده شده ساخته می شود و به همین ترتیب این باید با سایر وابستگی های پروژه سازگار باشد. اگر شما پسوند کد را گردآوری کرده اید ، زیرا مرحله ساخت لازم نیست ، چرخ ها نصب می کنند.

اگر بسته چرخ را ندارید می توانید آن را نصب کنید.

انواع مختلفی از چرخ ها وجود دارد. با این حال ، اگر پروژه شما خالص Python و Python2/3 سازگار است ، یک چرخ جهانی ایجاد کنید:

اگر Python2/3 سازگار نباشد یا حاوی پسوندهای کامپایل شده باشد فقط از آن استفاده کنید:

چرخ قابل نصب در زیر Dist/ Directory ایجاد می شود. دایرکتوری ساخت نیز با کد ساخته شده ایجاد می شود.

بسته آزمایش و انتشار در PYPI

توزیع بسته در PYPI هر کسی را به صورت آنلاین قادر می سازد تا بسته را نصب کند.

ابتدا باید یک حساب کاربری در PYPI تنظیم کنید. اگر می خواهید بسته خود را در سایت تست PYPI آزمایش کنید ، باید در آنجا حساب کاربری نیز تنظیم کنید. این آسان است

یک حساب کاربری در PYPI ایجاد کنید: به آدرس: https://pypi. python.org بروید و ثبت نام را انتخاب کنید. دستورالعمل را دنبال کن.

یک حساب کاربری در TestPypi ایجاد کنید: به آدرس: https://testpypi. python.org بروید و ثبت نام را انتخاب کنید. دستورالعمل را دنبال کن.

به شماره نسخه نیز احتیاج خواهید داشت. نسخه معنایی توصیه می شود (برای جزئیات بیشتر به https://semver.org مراجعه کنید). نسخه استاندارد استاندارد برای یک پروژه در حال توسعه 0. 1. 0 است.

بهترین روش برای بارگذاری در PYPI استفاده از Twine است.

مهم: ابتدا می توانید بارگذاری خود را با استفاده از سایت تست PYPI آزمایش کنید. بسیار توصیه می شود که این کار را انجام دهید و بسته بندی خود را به شرح زیر تست کنید. توجه: پس از بارگذاری بسته ای در PYPI ، می توان آن را حذف کرد ، اما نمی توانید بسته دیگری را با همان شماره نسخه بارگذاری کنید - این قرارداد نسخه را می شکند. بنابراین ، به ویژه محتاطانه است که ابتدا با TestPypi آزمایش کنید. توجه داشته باشید که هر چیزی که در TestPypi قرار داده اید باید به عنوان یک سایت به طور منظم محتوا را یکبار مصرف کند.

بارگذاری در testpypi

در این بخش نحوه بارگذاری توزیع منبع بسته شما نشان می دهد.

مستندات بیشتر در: https://packaging. python.org/guides/using-testpypi توجه: این پیوند شامل گزینه استفاده از یک فایل PYPIRC برای مخفف برخی از خطوط فرمان زیر است.

توزیع منبع همه چیز مورد نیاز برای ساخت/نصب بسته را بر روی هر بستر پشتیبانی شده فراهم می کند. تست های ، مستندات و داده های پشتیبانی نیز می توانند گنجانده شوند.

اکنون می توانید بسته خود را به صورت زیر به TestPypi بارگذاری کنید. با فرض توزیع منبع خود در زیر Dist/ نامیده می شود pyexample-0. 1. 0. tar. gz:

از طرف دیگر ، خط زیر تمام توزیع های تولید شده شما را در زیر Dist/ Directory بارگذاری می کند. این ممکن است در صورت ایجاد چرخ ها (به تصویر زیر) علاوه بر توزیع منبع نیز استفاده شود.

از شما خواسته می شود نام کاربری و رمزعبور خود را برای حساب TestPYPI خود ارائه دهید.

گزینه: شما می توانید هنگام بارگذاری ، بسته خود را به صورت دیجیتالی امضا کنید. برای انجام این کار به یک کلید GPG تنظیم شده اید. لازم به ذکر است که PIP در حال حاضر امضاهای GPG را هنگام نصب بررسی نمی کند - این کار باید به صورت دستی انجام شود.

برای ثبت دیجیتالی با استفاده از کلید GPG خود (به عنوان مثال برای بسته بندی pyexample در نسخه 0. 1. 0):

پرونده pyexample-0. 1. 0. tar. gz. asc ایجاد می شود. اکنون بارگذاری:

توجه:-Detach-Sign به این معنی است که شما در حال نوشتن امضا در یک پرونده جداگانه *. asc

بسته اکنون باید در این موارد بارگذاری شود: https://testpypi. python.org/pypi

توجه داشته باشید که چگونه اطلاعات/طبقه بندی کننده هایی که در setup. py تهیه کرده اید در صفحه نشان داده شده است.

اکنون می توانید PIP را از خط فرمان آزمایش کنید. به عنوان مثال. برای نصب بسته pyexample در فضای نصب کاربر خود:

بارگذاری در PYPI

هنگامی که از مخزن در TestPyi خوشحال شدید ، بارگذاری در PYPI همان فرآیند خط فرمان خواهد بود ، اما بدون نیاز به مشخص کردن استدلال های URL. به عنوان مثال ، مراحل فوق به سادگی تبدیل می شود:

به عنوان مثال. برای بارگذاری همه توزیع های ایجاد شده در Dist/

به عنوان مثال. برای بارگذاری توزیع منبع با امضای GPG:

بسته شما اکنون باید در: https://pypi. python.org/pypi بارگذاری شود

بسته باید PIP نصب کند. به عنوان مثال:

همچنین توصیه می شود که از محیط های مجازی برای تست نصب وابستگی ها از ابتدا و برای امتحان کردن نسخه های مختلف پایتون استفاده کنید. برای اطمینان از جداسازی محیط شما ، پرچم های مورد نیاز را بررسی کنید. به عنوان مثال. برای VirtualEnv از پرچم-بسته های بدون سایت استفاده کنید. برای Conda ، قبل از فعال کردن محیط زیست ، متغیر Environment Export Pythoousersite = 1 را تنظیم کنید. بسته هایی که صریحاً از طریق PythonPath در ارتباط هستند ، هنوز هم یافت می شود.

بارگیری تاربال بدون نصب

برای آزمایش بارگیری توزیع منبع (بدون نصب) با وابستگی:

یا فقط بسته بدون وابستگی:

بارگیری توزیع منبع یک روش خوب برای بررسی اینکه شامل آنچه شما می خواهید به طور پیش فرض شامل می شود. اگر اینطور نیست ، سپس یک فایل مانیفست را اضافه کنید ، که به Setuptools دستور می دهد که در توزیع منبع چه چیزی را شامل شود.

پروژه های مثال

pyexample:

یک پروژه نمونه کوچک با استفاده از numpy و mpi4py (به عنوان مثال بالا استفاده می شود).

توجه: برای اجرای تست MPI4PY حداقل از 2 پردازنده استفاده کنید:

  • mpiexe c-np 2 python module_mpi4py_1. py

libensemble:

یک پروژه آرگون برای اجرای گروه های محاسبات.

محتوای مرتبط شامل:

setup. py شامل نقشه برداری از ساختار دایرکتوری منبع متفاوت به بسته ها و زیر بسته ها با استفاده از آرگومان تنظیمات pack_dir است.

ویدیو های آموزشی فارکس...
ما را در سایت ویدیو های آموزشی فارکس دنبال می کنید

برچسب : نویسنده : محبوب امانی بازدید : 40 تاريخ : شنبه 3 تير 1402 ساعت: 1:08