Package manager ها – بخش 1

مبانی زبان Python _ بخش 3
مبانی زبان Python _ بخش 3

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

پایتون به عنوان ابزاری برای اتوماتیک کردن الگوریتم‌های معاملاتی می‌تواند مورد استفاده قرار گیرد. در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف برای اعمال هر یک از محاسبات بازار‌های مالی در استراتژی‌های معاملاتی می‌توانید از سفارش کد پایتون، سفارش کد mql و … برای کد کردن و بهینه‌یابی استراتژی‌های معاملاتی خود استفاده کنید. و در عین حال سوای امکان سفارش اکسپرت می‌توانید از سفارش اندیکاتور برای دریافت یک نمایش گرافیکی از محاسبات استراتژی خود بهره ببرید.

– – –

Package manager ها
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

 

conda در مقابل Pip

تفاوت اساسی بین packaging این دو در چیزی است که آن‌ها در packageها قرار می‌دهند.

بسته های Pip کتابخانه های پایتون مانند NumPy یا matplotlib هستند.

بسته‌های Conda شامل کتابخانه‌های پایتون (NumPy یا matplotlib)، کتابخانه‌های C (libjpeg) و فایل‌های اجرایی (مانند کامپایلرهای C و حتی خود مفسر پایتون) هستند.

Package manager ها - بخش 1

 

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

همچنین می‌توانید از سسله مقالات آموزش مبانی زبان MQL5 سایت جهان بورس استفاده نمایید.

5 1 رای
امتیازدهی به مقاله
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید
هیچ محصولی در سبد خرید وجود ندارد!
خرید را ادامه دهید