Package manager ها – بخش 2
در سومین مقاله آموزش برنامهنویسی زبان python از سری مقالات مرتبط با برنامهنویسی در بازارهای مالی به شرح و بررسی «package manager ها» پرداختیم.، در این بخش موضوع را پی گرفته و بیشتر در مورد آن صحبت خواهیم پرداخت.
Package manager ها و آشنایی با Conda Environment
در این بخش از آموزش برنامهنویسی پایتون، مطالب آموزش Package manager ها را با تمرکز بر Conda پی گرفته و آموزش رل هنگامی که شروع به توسعه یک پروژه از ابتدا میکنید، توصیه میشود از آخرین نسخههای کتابخانههای مورد نیاز خود استفاده کنید.
با این حال، هنگام کار با پروژه شخص دیگری، مانند هنگام اجرای نمونهای از Kaggle یا Github، ممکن است به دلیل مشکلات سازگاری نیاز به نصب نسخههای خاصی از بستهها یا حتی نسخه دیگری از Python داشته باشید.
این مشکل همچنین ممکن است زمانی رخ دهد که میخواهید برنامهای را اجرا کنید که مدتها پیش توسعه دادهاید، که از نسخه کتابخانه خاصی استفاده میکند که به دلیل بهروزرسانیها دیگر با برنامه شما کار نمیکند.
محیطهای مجازی ایزوله(Environment) راهحلی برای این نوع مشکلات هستند. با استفاده از آنها میتوان چندین محیط ایجاد کرد که هر کدام دارای نسخههای متفاوتی از بستهها هستند. یک راهاندازی معمولی پایتون شامل Virtualenv است، ابزاری برای ایجاد محیطهای مجازی پایتون ایزوله، که به طور گسترده در جامعه پایتون استفاده میشود. درباره سایر راهها و شرح هر یک در قسمت قبل توضیح دادهایم.
Conda شامل مدیر محیط(Environment manager) خود است و مزایایی را نسبت به Virtualenv ارائه میدهد، به خصوص در مورد برنامههای عددی، مانند توانایی مدیریت وابستگیهای غیر پایتون و توانایی مدیریت نسخههای مختلف پایتون، که با Virtualenv امکان پذیر نیست.
علاوه بر این، محیطهای Conda کاملاً با بستههای پیشفرض پایتون سازگار هستند که ممکن است با استفاده از pip نصب شوند.
نصب Miniconda Conda، یک محیط root را با نسخهای از Python و برخی از بستههای اولیه نصب شده ارائه میدهد. علاوه بر این محیط root، امکان راه اندازی محیطهای اضافی به جهت بهرهگیری از نسخههای مختلف پایتون و پکیجها نیز وجود خواهد داشت.
محیط ایزوله(Conda environment) کوندا
مشابه محیطهای مجازی پایتون (venv)
مجموعهای از بستههای جدا شده در یک فهرست
قابلیت اشتراکگذاری از طریق Environment files
با استفاده از محیط Anaconda Powershell Prompt، میتوان با اجرای conda env list، محیطهای موجود Conda را بررسی کرد.
(base) C:\Users\IEUser>conda env list //
Package manager ها و ساخت یک Conda environment جدید
این محیط پایه، root environment است که توسط Miniconda installer ایجاد شده است. با اجرا فرمان زیر میتوان محیط دیگری به نام otherenv ایجاد کرد
(base) C:\Users\IEUser>conda create --name otherenv //
فعال کردن یک Conda environment
همانطور که پس از اتمام فرآیند ایجاد محیط، در نتیجه پرینت آمده در ترمینال مشخص شد، میتوان محیط otherenv را با اجرای “conda activate otherenv“ فعال کرد. با علامت بین پرانتز در ابتدای دستور متوجه خواهید شد که محیط تغییر کرده است:
(base) C:\Users\IEUser>conda activate otherenv (otherenv) C:\Users\IEUser>
python repl
با اجرای فرمان “python“ میتوانید مفسر پایتون را در این محیط باز کنید:
(otherenv) C:\Users\IEUser>python # OutPut: Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
البته در بخشهای بعدی به طور مفصل در مورد محیطهای اجرای پایتون صحبت خواهیم کرد.
این محیط شامل Python 3.7.0 است، همان نسخه موجود در root base environment. برای خروج از مفسر پایتون، کافیست دستور “()quit“ را اجرا کنید.
>>> quit() (otherenv) C:\Users\IEUser>
برای غیرفعال کردن otherenv
environment و بازگشت به root base environment، باید فرمان “deactivate” را اجرا کنید:
(otherenv) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>
همانطور که قبلا ذکر شد، Conda به شما اجازه میدهد تا به راحتی محیطهایی را با نسخه های مختلف پایتون ایجاد کنید، که با Virtualenv ساده نیست. برای گنجاندن یک نسخه پایتون متفاوت در یک محیط، باید آن را با استفاده از
“<python=<version“
هنگام اجرای “… conda create“ مشخص کنید. به عنوان مثال، برای ایجاد محیطی به نام py2 با python 2.7، باید conda create –name py2 python=2.7 را اجرا کنید:
(base) C:\Users\IEUser>conda create --name py2 python=2.7 # OutPut: Solving environment: done # ...
همانطور که در خروجی conda create نشان داده شده است، این بار چند بسته جدید نصب شده است، زیرا محیط جدید از Python 2 استفاده میکند.
(base) C:\Users\IEUser>conda activate py2 (py2) C:\Users\IEUser>python Python 2.7.15 |Anaconda, Inc.| (default, May 1 2018, 18:37:09) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
حال، اگر conda env list را اجرا کنید، باید دو محیط ایجاد شده را به غیر از root base environment مشاهده کنید.:
(py2) C:\Users\IEUser>conda env list # conda environments: # base C:\Users\IEUser\Miniconda3 otherenv C:\Users\IEUser\Miniconda3\envs\otherenv py2 * C:\Users\IEUser\Miniconda3\envs\py2 (py2) C:\Users\IEUser>
در لیست، ستاره محیط فعال شده را مشخص میکند.
حذف یک Conda environment
حذف یک محیط با اجرای
“conda remove –name <environment name> –all“
امکان پذیر است.
- از آنجایی که امکان حذف یک محیط فعال وجود ندارد، ابتدا باید محیط py2 را غیرفعال کنید تا آن را حذف کنید.
(py2) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>conda remove --name py2 --all # OutPut: Remove all packages in environment C:\Users\IEUser\Miniconda3\envs\py2:
در ادامهی آموزش برنامهنویسی پایتون، اکنون که با اصول مدیریت محیطها در Conda تا حدی آشنا شدهایم بیایید در مورد نحوه مدیریت پکیجها در محیط ها صحبت کنیم.
درک موارد پایه مدیریت بسته با Conda
در هر محیط، بستههای نرم افزاری را میتوان با استفاده از مدیر بسته Conda نصب کرد. root base environment ایجاد شده توسط نصب کننده Miniconda شامل بستههایی به طور پیشفرض است که بخشی از کتابخانه استاندارد پایتون نیستند.
نصب پیشفرض شامل حداقل بستههای لازم برای استفاده از Conda است. برای بررسی لیست بستههای نصب شده در یک محیط، فقط باید از فعال بودن آن مطمئن شوید و conda list را اجرا کنید. در محیط root بستههای زیر به صورت پیشفرض نصب میشوند :
(base) C:\Users\IEUser>conda list //
برای مدیریت بستهها نیز باید از Conda استفاده کنید. در مرحله بعد، بیایید نحوه جستجو، نصب، بهروزرسانی و حذف بستهها را با استفاده از Conda ببینیم.
جستجو و نصب بستهها
بستهها از repository هایی به نام channel توسط Conda نصب میشوند و برخی از کانالهای پیشفرض توسط نصب کننده پیکربندی(configuration) میشوند.
برای جستجوی یک بسته خاص، میتوانید جستجوی <conda search <package name را اجرا کنید. به عنوان مثال، نحوه جستجوی بسته keras (یک کتابخانه machine learning) به این صورت است:
(base) C:\Users\IEUser>conda search keras Loading channels: done # Name Version Build Channel keras 2.0.8 py35h15001cb_0 pkgs/main keras 2.0.8 py36h65e7a35_0 pkgs/main keras 2.1.2 py35_0 pkgs/main keras 2.1.2 py36_0 pkgs/main keras 2.1.3 py35_0 pkgs/main keras 2.1.3 py36_0 pkgs/main ... (more)
با توجه به خروجی قبلی، نسخههای مختلف بسته و ساختهای مختلف برای هر نسخه وجود دارد، مانند پایتون 3.5 و 3.6.
جستجوی قبلی فقط موارد منطبق دقیق را برای بستههایی با نام keras نشان میدهد. برای انجام یک جستجوی گستردهتر، از جمله تمام بستههای حاوی keras در نام خود، باید از علامت * استفاده کنید. به عنوان مثال، وقتی جستجوی
“*conda search *keras“
را اجرا میکنید، موارد زیر را دریافت میکنید:
(base) C:\Users\IEUser>conda search *keras* Loading channels: done # Name Version Build Channel keras 2.0.8 py35h15001cb_0 pkgs/main keras 2.0.8 py36h65e7a35_0 pkgs/main keras 2.1.2 py35_0 pkgs/main keras 2.1.2 py36_0 pkgs/main keras 2.1.3 py35_0 pkgs/main keras 2.1.3 py36_0 pkgs/main ... (more) keras-applications 1.0.2 py35_0 pkgs/main keras-applications 1.0.2 py36_0 pkgs/main keras-applications 1.0.4 py35_0 pkgs/main ... (more) keras-base 2.2.0 py35_0 pkgs/main keras-base 2.2.0 py36_0 pkgs/main ... (more)
همانطور که خروجی قبلی نشان میدهد، بستههای دیگری مرتبط با keras در کانالهای پیش فرض وجود دارد.
برای نصب یک بسته، باید <conda install <package name را اجرا کنید. به طور پیش فرض، جدیدترین نسخه بسته در محیط فعال نصب میشود. بنابراین، بیایید بسته keras را در محیط otherenv که قبلا ایجاد کردهاید نصب کنیم:
(base) C:\Users\IEUser>conda activate otherenv (otherenv) C:\Users\IEUser>conda install keras Solving environment: done ...
Conda هنگام نصب بسته، وابستگیهای لازم را برای یک بسته مدیریت میکند. از آنجایی که بسته keras وابستگیهای زیادی دارد، وقتی آن را نصب میکنید، Conda موفق میشود این لیست بزرگ از بستهها را نصب کند.
شایان ذکر است که از آنجایی که جدیدترین ساخت بسته keras از Python 3.6 استفاده میکند و محیط otherenv با استفاده از Python 3.7 ایجاد شده است، بسته پایتون نسخه 3.6.6 به عنوان یک وابستگی گنجانده شده است. پس از تایید نصب، میتوانید بررسی کنید که نسخه Python برای محیط otherenv به نسخه 3.6.6 downgrad شده است.
گاهی اوقات، نمیخواهید بستهها downgrad شوند و بهتر است فقط یک محیط جدید با نسخه ضروری پایتون ایجاد کنید. برای بررسی لیست بستههای جدید، بهروزرسانیها و کاهشهای لازم برای یک بسته بدون نصب آن، باید از پارامتر
«dry-run–» استفاده کنید. به عنوان مثال، برای بررسی بستههایی که با نصب بسته keras تغییر میکنند، باید موارد زیر را اجرا کنید:
(otherenv) C:\Users\IEUser>conda install keras --dry-run //
با این حال، در صورت لزوم، امکان تغییر پایتون پیش فرض یک محیط Conda با نصب نسخه خاصی از بسته پایتون وجود دارد. برای نشان دادن آن، اجازه دهید یک محیط جدید به نام envpython ایجاد کنیم:
(otherenv) C:\Users\IEUser>conda create --name envpython Solving environment: done
همانطور که قبلا دیدید، از آنجایی که محیط پایه root از Python 3.7 استفاده میکند، envpython شامل همین نسخه از Python ایجاد می شود:
(base) C:\Users\IEUser>conda activate envpython (envpython) C:\Users\IEUser>python Python 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> quit() (envpython) C:\Users\IEUser>
برای نصب یک نسخه خاص از یک بسته، می توانید “<conda install <package name>=<version“ را اجرا کنید. به عنوان مثال، نحوه نصب پایتون 3.6 در محیط envpython به این صورت است:
(envpython) C:\Users\IEUser>conda install python=3.6 Solving environment: done
در صورتی که نیاز به نصب بیش از یک پکیج در یک محیط داشته باشید، امکان اجرای “… conda install“ تنها یک بار با عبور نام بستهها وجود دارد. برای نشان دادن آن، اجازه دهید numpy، scipy، و matplotlib، بستههای پایه برای محاسبات عددی در محیط پایه ریشه نصب کنیم:
(envpython) C:\Users\IEUser>deactivate (base) C:\Users\IEUser>conda install numpy scipy matplotlib Solving environment: done
اکنون که نحوه جستجو و نصب بستهها را پوشش دادهاید، بیایید نحوه بهروزرسانی و حذف آنها را با استفاده از Conda ببینیم.
بهروزرسانی و حذف پکیجها
گاهی اوقات، زمانی که بستههای جدید منتشر میشوند، باید آنها را به روز کنید. برای انجام این کار، میتوانید
“<conda update <package name“
را اجرا کنید. اگر میخواهید همه بسته ها را در یک محیط به روز کنید، باید محیط را فعال کنید و
“conda update –all“
را اجرا کنید.
برای حذف یک بسته، میتوانید “<conda remove <package name“ را اجرا کنید. به عنوان مثال، نحوه حذف
root base environment به این صورت است:
(base) C:\Users\IEUser>conda remove numpy Solving environment: done
شایان ذکر است که وقتی یک بسته را حذف میکنید، تمام بستههایی که به آن وابسته هستند نیز حذف میشوند.
دستورهای Conda
در پایان این بخش از آموزش Package manager ها از آموزش برنامهنویسی پایتون به مرور اجمالی دستورات Conda میپردازیم.
در مقالات بعدی آموزش مبانی زبان Python، مطالب را پی گرفته و بیشتر در مورد package manager ها صحبت خواهیم کرد.
همچنین میتوانید از سسله مقالات آموزش مبانی زبان MQL5 سایت جهان بورس استفاده نمایید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.