Package manager ها – بخش 1


در دومین مقالهی آموزش برنامه نویسی زبان python از سری مقالات مرتبط با برنامهنویسی در بازارهای مالی به شرح و بررسی «راه اندازی ابتدایی» پایتون روی سیستم پرداختیم.، در این بخش این موضوع را ادامه داده و بیشتر در مورد «package manager ها» صحبت خواهیم پرداخت.
– – –

package managerیا package-management system مجموعهای از ابزارهای نرم افزاری است که فرآیند نصب، ارتقاء، پیکربندی، و حذف برنامههای رایانهای را برای رایانه به روشی ثابت خودکار میکند.
Package manager ها
در این بخش از آموزش برنامهنویسی پایتون میخواهیم در باب Package manager ها صحبت کنیم. یک package manager با پکیجها، توزیع نرم افزارها و دادهها در فایلهای آرشیو سر و کار دارد. بستهها حاوی metadata هستند، مانند نام نرمافزار، شرح هدف، شماره نسخه، فروشنده، جمعبندی چک (ترجیحاً یک تابع هش رمزنگاری)، و فهرستی از dependency های لازم برای اجرای صحیح نرمافزار. پس از نصب، metadata در یک پایگاه داده پکیج محلی ذخیره میشود. مدیران بسته معمولاً پایگاه دادهای از وابستگیهای نرم افزار و اطلاعات نسخه را برای جلوگیری از عدم تطابق نرمافزار و پیشنیازهای از دست رفته نگهداری میکنند. آنها از نزدیک با repository نرم افزار، binary repository managers و app stores کار میکنند.
Package Managers طوری طراحی شدهاند که نیاز به نصب و بهروزرسانی دستی را از بین ببرند. این میتواند به ویژه برای شرکتهای بزرگی که سیستم عامل آنها معمولاً از صدها یا حتی دهها هزار بسته نرمافزاری مجزا تشکیل شده است مفید باشد.
environment manager ها محیط های مجازی ایزولهای اند که امکان بهرهگیری از نسخههای مختلف پکیجهای مختلف در یک سیستم را فراهم میکند.
Environment manager ها
توسعه دهندگان پایتون از کتابخانههای خارجی برای افزودن ویژگیها و رفع اشکالات استفاده زیادی میکنند. بسته به پیچیدگی موضوع در دست، به نسخههای مختلفی از هر ابزار نیاز خواهید داشت. استفاده از ابزار X (که از جدیدترین نسخه فریمورک Y استفاده میکند) برای رفع مشکل زمانی که پروژه دیگری که روی آن کار میکنید به نسخه قدیمی چارچوب نیاز دارد، به دلیل نحوه تنظیم وابستگیهای آن، میتواند مشکل باشد. این یک مشکل رایج است که با محیطهای مجازی قابل حل است.
تعریف محیطهای مجازی بر اساس python docs به این صورت است:
یک محیط اجرا (runtime environment) ایزوله تعاملی شده که به کاربران و برنامههای کاربردی پایتون اجازه میدهد تا توزیعهای مختلف پکیجهای پایتون را بدون تداخل با رفتار سایر برنامههای کاربردی پایتون که روی همان سیستم اجرا میشوند نصب و ارتقا دهند.
مزایای داشتن یک محیط ایزوله(environment) برای برنامه نویسی
- در صورت تغییر هرگونه وابستگی(dependencies)، از breakage کد جلوگیری میشود.
- امکان همکاری بهتر بین تیم را فراهم میکند.
- محیط مطمئنتری را برای کدنویسی فراهم میکند.
- …
راههای ایجاد محیط و مدیریت Package ها در پایتون
دستهبندیها و شرح دقیق موارد در آموزش برنامهنویسی پایتون میتواند بسیار برای تسهیل درک موضوعات مفید باشد.
راههای مختلفی برای مدیریت package ها و environment ها در پایتون وجود دارد.
- Virtualenv و Pip
کلاسیکترین راه استفاده از pip به عنوان package manager پایتون، همراه با virtualenv به عنوان environment manager پایتون است. (افزونهای به نام virtualenvWrapper وجود دارد که ویژگیهای بیشتری را برای مدیریت آسانتر محیطهای شما اضافه میکند.)
- Pipenv
راهحل بعدی استفاده از pipenv به عنوان package and environment manager پایتون است.؛
- هدف آن ادغام عملکرد Pip و Virtualenv در یک ابزار واحد است و ادعا میکند که بهترین ابزار packaging است.
- دارای ویژگیها و عملکردهای پیشرفتهای برای ایجاد، حذف، فعال کردن و غیرفعال کردن محیط شماست. به طور مثال Pipenv شامل بسته ایمنی است و هر بسته و dependency های آنها را اسکن می کند تا نقاط آسیبپذیر از حیث مسائل امنیتی را پیدا کند.
- Poetry
یک ابزار پایتون غنی از ویژگیهای کاربردی برای مدیریت dependency های پروژه است. این ابزار سریعتر از اکثر ابزارهای محیط مجازی است و دارای یک CLI(command line interface) قدرتمند برای مدیریت پروژههای پایتون است.
- Conda
راههای دیگری نیز برای این موضوع نیز وجود دارد که یکی از معروفترین و محبوبترین آن ها استفاده از Conda به عنوان package and environment manager است.
- Conda دارای پشتیبانی داخلی برای مدیریت پکیجها است.
- بستههای آن باینری هستند، بنابراین برای استفاده از هر یک از آنها نیازی به نصب کامپایلر ندارید.
- از هر قابلیتی که کتابخانههای سنتی Virtualenv دارند پشتیبانی میکند.
- میتوانید نسخههای مختلفی از پایتون را نصب کنید که هر کدام از بقیه جدا شدهاند و همه در یک ابزار واحد هستند.
آناکوندا (Anaconda) چیست
از سال 2011، پایتون شامل pip است، یک سیستم مدیریت پکیج که برای نصب و مدیریت بستههای نرم افزاری نوشته شده در پایتون استفاده میشود. با این حال، برای محاسبات عددی، چندین dependency وجود دارد که در پایتون نوشته نشدهاند، بنابراین نسخهی اولیه pip نتوانست به تنهایی این مشکل را حل کند.
برای دور زدن این مشکل، Continuum Analytics، نرمافزار Anaconda را منتشر کرد. یک توزیع پایتون متمرکز بر کاربردهای علمی و Conda، یک سیستم مدیریت بسته و محیط(package and environment management system) را منتشر کرد که توسط توزیع Anaconda استفاده میشود.
شایان ذکر است که نسخههای جدیدتر pip میتوانند وابستگیهای خارجی(external dependencies) را با استفاده از wheels کنترل کنند، اما با استفاده از Anaconda، میتوانید کتابخانههای حیاتی برای علم داده را راحتتر نصب کنید. (مطالعه بیشتر در مورد این بحث را میتوانید در اینجا بخوانید.)
Conda یک سیستم مدیریت پکیج open source و سیستم مدیریت environment است که بر روی Windows ، macOS و Linux اجرا میشود.
بر طبق توضیحات آمده در وبسایت رسمی آن: کار این سیستم مدیریت Package و dependencyها و environmentها برای هر یک از زبانهای زیر است.: Python، R، Ruby، ، Scala، Java، JavaScript، C/C++، FORTRAN
Conda به سرعت package ها و dependency های آنها را نصب، اجرا و به روز میکند. Conda به راحتی محیطها را در رایانه محلی شما ایجاد، ذخیره، بارگیری و سوئیچ میکند.
Conda برای برنامههای پایتون ایجاد شده است، اما می تواند برای package های دیگر زبانها هم مورد استفاده قرار گیرد.
بحث های زیادی در مورد ایجاد یک سیستم مدیریت بسته دیگر برای اکوسیستم پایتون وجود دارد. شایان ذکر است که سازندگان Conda بستهبندی استاندارد پایتون را به حداکثر رساندند و تنها زمانی ابزار دوم را ایجاد کردند که مشخص بود این تنها راه معقول به جلو است.
توزیعهای(Flavors) مختلف Conda
Miniconda
توزیعی سبک از conda؛ صرفا شامل packagesهای لازم پایتون است.
Anaconda
توزیعی از conda برای علم داده(data science)؛ همراه با بسیاری از بستههای علمی پایتون است.
Anaconda و Miniconda به محبوب ترین توزیعهای پایتون تبدیل شده اند که به طور گسترده برای علم داده و یادگیری ماشین در شرکتها و آزمایشگاههای تحقیقاتی مختلف استفاده می شود. آنها پروژههای رایگان و متن باز هستند و در حال حاضر شامل بیش از 1400 بسته در repository آنها موجود است. در بخش بعدی، نصب آناکوندا را بررسی خواهیم کرد.
نصب conda
پس از انتخاب توزیع مطلوب خودتان میتوانید مراحل نصب conda را میتوانید موارد مندرج در سایت رسمی conda پی بگیرید. نکته خاصی در این بخش وجود ندارد به غیر از این که توصیه میشود که اگر مراحل نصب را متناسب با سیستم عامل خود از طریق محیط ترمینال انجام میدهید، در طی پروسه نصب از زدن هر گونه دکمهای اضافی خود داری کنید.
تدکر مهم : همان طور که در بخش قبل هم گقته شد به دلیل این که تعدادی از کتابخانهها و پکیجهای مهم مرتبط با بازارهای مالی در زبان پایتون هنوز با سیستم عامل لینوکس سازگار نیستند اگر هدفی در این حوزه را دنبال میکنید بهتر است که فعلا از گزینه نصب و اجرای پایتون از طریق Anaconda Powershell Prompt استفاده شود.
- در صورتی که پس از نصب conda شناسایی نشد، دستورات زیر را اجرا کنید :
source ~/anaconda3/etc/profile.d/conda.sh //
conda init bash //
Anaconda Powershell Prompt
پس از اتمام مراحل نصب Conda در ویندوز از آنجایی که Anaconda در متغیر محیطی PATH گنجانده نشده است، دستورات آن در خط فرمان پیش فرض ویندوز(command prompt) کار نمیکنند. و برای استفاده از Conda ، باید خط فرمان خود آن را باز کنید، که با کلیک بر روی دکمه ویندوز و سپس کلیک بر روی آیکون Anaconda Powershell Prompt قابل دسترسی خواهد بود.
اکنون در محیط مذکور میتوانید از کامندهای مشخص کوندا (conda) برای ساخت و مدیریت محیطهای مجازی ایزوله (environment) و مدیریت package ها استفاده کنید.
هنگامی که محیط prompt باز می شود، می توانید با اجرای conda –version بررسی کنید که آیا Conda در دسترس است یا خیر.
(base) C:\Users\IEUser>conda --version # OutPut: conda 4.5.11
و برای دریافت اطلاعات بیشتر در مورد نصب نیز می توانید Conda info را اجرا کنید. :
(base) C:\Users\IEUser>conda info //
مزایای Conda نسبت به دیگر package manager ها
- ساختار روشن(Clear Structure)
- مدیریت فایل شفاف(Transparent File Management)
- انعطاف پذیری(Flexibility)
- چند منظوره(Multipurpose)

conda در مقابل Pip
تفاوت اساسی بین packaging این دو در چیزی است که آنها در packageها قرار میدهند.
بسته های Pip کتابخانه های پایتون مانند NumPy یا matplotlib هستند.
بستههای Conda شامل کتابخانههای پایتون (NumPy یا matplotlib)، کتابخانههای C (libjpeg) و فایلهای اجرایی (مانند کامپایلرهای C و حتی خود مفسر پایتون) هستند.

در مقالات بعدی آموزش مبانی زبان Python، مطالب را پی گرفته و بیشتر در مورد package manager ها صحبت خواهیم کرد.
همچنین میتوانید از سسله مقالات آموزش مبانی زبان MQL5 سایت جهان بورس استفاده نمایید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.