آموزش پایتون - محیط مجازی

محیط مجازی پایتون

محیط‌های مجازی پایتون یک نصب مجازی از پایتون را در داخل پوشه پروژه ایجاد می‌کنند. سپس کاربران می‌توانند پکیج‌های پایتون را برای هر پروژه نصب و مدیریت کنند. این امر به کاربران اجازه می‌دهد بدون ترس از خراب شدن پکیج‌های نصب‌شده در سایر محیط‌ها، اقدام به نصب پکیج‌ها و تغییر محیط پایتون خود کنند.

محیط مجازی در پایتون چیست؟

یک محیط مجازی پایتون:

  • یک‌بارمصرف و قابل حذف تلقی می‌شود.
  • برای نگهداری یک مفسر مشخص پایتون و کتابخانه‌ها و فایل‌های باینری نرم‌افزاری مورد نیاز برای پشتیبانی از یک پروژه استفاده می‌شود.
  • در یک پوشه قرار دارد که به‌طور معمول venv یا .venv در پوشه پروژه نام‌گذاری می‌شود.
  • قابل جابه‌جایی یا کپی‌برداری در نظر گرفته نمی‌شود.

وقتی نرم‌افزار پایتون را روی کامپیوتر خود نصب می‌کنید، از هر جایی در سیستم‌عامل قابل استفاده است. این یک نصب سراسری (System-wide) است.

هنگام توسعه یک برنامه در پایتون، ممکن است نصب یک یا چند کتابخانه با استفاده از ابزار pip نیاز باشد (به‌عنوان مثال، pip3 install somelib). علاوه بر این، یک برنامه (فرض کنید App1) ممکن است به نسخه خاصی از کتابخانه نیاز داشته باشد − مثلاً somelib 1.0. در عین حال، برنامه پایتون دیگری (مثلاً App2) ممکن است به نسخه جدیدتری از همان کتابخانه نیاز داشته باشد، مثلاً somelib 2.0. بنابراین با نصب نسخه جدید، ممکن است عملکرد App1 به دلیل تعارض بین دو نسخه مختلف از یک کتابخانه مختل شود.

می‌توان با فراهم کردن دو محیط ایزوله از پایتون در همان دستگاه، از این تعارض جلوگیری کرد. به این محیط‌ها، محیط مجازی (Virtual Environment) گفته می‌شود. یک محیط مجازی، یک ساختار پوشه‌ای جداگانه شامل نصبی ایزوله است که کپی محلی از مفسر پایتون، کتابخانه استاندارد و سایر ماژول‌ها را در خود دارد.

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

python virtual environment

ایجاد محیط‌های مجازی در پایتون با استفاده از venv

این قابلیت توسط ماژول venv در توزیع استاندارد پایتون پشتیبانی می‌شود. از دستورات زیر برای ایجاد یک محیط مجازی جدید استفاده کنید.

C:\Users\Acer>md\pythonapp
C:\Users\Acer>cd\pythonapp
C:\pythonapp>python -m venv myvenv

در اینجا، myvenv پوشه‌ای است که محیط مجازی جدید پایتون در آن ایجاد می‌شود و ساختار پوشه زیر را نشان می‌دهد −

Directory of C:\pythonapp\myvenv
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 <DIR> Include
22-02-2023 09:53 <DIR> Lib
22-02-2023 09:53 77 pyvenv.cfg
22-02-2023 09:53 <DIR> Scripts

ابزارهای فعال‌سازی و غیرفعال‌سازی محیط مجازی و همچنین نسخه محلی مفسر پایتون در پوشه Scripts قرار خواهند گرفت.

Directory of C:\pythonapp\myvenv\scripts
22-02-2023 09:53 <DIR> .
22-02-2023 09:53 <DIR> ..
22-02-2023 09:53 2,063 activate
22-02-2023 09:53 992 activate.bat
22-02-2023 09:53 19,611 Activate.ps1
22-02-2023 09:53 393 deactivate.bat
22-02-2023 09:53 106,349 pip.exe
22-02-2023 09:53 106,349 pip3.10.exe
22-02-2023 09:53 106,349 pip3.exe
22-02-2023 09:53 242,408 python.exe
22-02-2023 09:53 232,688 pythonw.exe

فعال‌سازی محیط مجازی

برای فعال کردن این محیط مجازی جدید، فایل activate.bat را در پوشه Scripts اجرا کنید.

C:\pythonapp>myvenv\scripts\activate
(myvenv) C:\pythonapp>

به نام محیط مجازی داخل پرانتز توجه کنید. پوشه Scripts حاوی یک کپی محلی از مفسر پایتون است. می‌توانید یک نشست پایتون را در این محیط مجازی شروع کنید.

بررسی در حال اجرا بودن پایتون در داخل محیط مجازی

برای تأیید اینکه آیا این نشست پایتون در محیط مجازی است یا خیر، sys.path را بررسی کنید.

(myvenv) C:\pythonapp>python
Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929
64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs',
'C:\\Python310\\lib', 'C:\\Python310', 'C:\\pythonapp\\myvenv',
'C:\\pythonapp\\myvenv\\lib\\site-packages']
>>>

پوشه Scripts این محیط مجازی شامل ابزارهای pip نیز می‌باشد. اگر پکیجی را از PyPI نصب کنید، آن پکیج تنها در محیط مجازی فعلی فعال خواهد بود.

غیرفعال‌سازی محیط مجازی

برای غیرفعال کردن این محیط، فایل deactivate.bat را اجرا کنید.

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.