محیط مجازی پایتون
محیطهای مجازی پایتون، یک نصب مجازی از پایتون را در داخل یک دایرکتوری پروژه ایجاد میکنند. کاربران سپس میتوانند بستههای پایتون را برای هر پروژه بهصورت جداگانه نصب و مدیریت کنند. این کار به کاربران این امکان را میدهد که بستهها را نصب کرده و محیط پایتون خود را تغییر دهند بدون اینکه نگران آسیب رساندن به بستههای نصبشده در سایر محیطها باشند.
محیط مجازی در پایتون چیست؟
یک محیط مجازی پایتون:
- به عنوان قابل حذف (Disposable) در نظر گرفته میشود.
- برای نگهداری از یک مفسر پایتون خاص و کتابخانهها و فایلهای باینری مورد نیاز برای پشتیبانی از یک پروژه استفاده میشود.
- در یک دایرکتوری نگهداری میشود که معمولاً بهصورت پیشفرض با نام
venv
یا.venv
در دایرکتوری پروژه قرار دارد. - قابل جابجایی یا کپی شدن در نظر گرفته نمیشود.
زمانی که شما نرمافزار پایتون را روی رایانه خود نصب میکنید، از هرجای فایلسیستم قابل استفاده است. این نوع نصب به صورت سراسری (سیستمواید) انجام میشود.هنگام توسعه یک برنامه در پایتون، ممکن است یک یا چند کتابخانه نیاز به نصب داشته باشند با استفاده از ابزار pip (مثلاً: pip3 install somelib
). علاوه بر این، ممکن است یک برنامه (مثلاً App1) به نسخه خاصی از یک کتابخانه نیاز داشته باشد – مثلاً somelib 1.0
. در همین زمان، برنامه دیگری در پایتون (برای مثال App2) ممکن است به نسخه جدیدتری از همان کتابخانه نیاز داشته باشد، مثلاً somelib 2.0
. بنابراین، با نصب نسخه جدید، ممکن است عملکرد App1 دچار مشکل شود به دلیل تداخل بین دو نسخه متفاوت از یک کتابخانه.
این تداخل را میتوان با ایجاد دو محیط ایزوله (جداگانه) از پایتون در یک سیستم جلوگیری کرد. اینها به عنوان محیطهای مجازی شناخته میشوند. یک محیط مجازی یک ساختار دایرکتوری جداگانه دارد که شامل یک نصب ایزولهشده با یک نسخه محلی از مفسر پایتون، کتابخانه استاندارد و سایر ماژولها است.نمودار زیر هدف و مزیت استفاده از محیط مجازی را نشان میدهد. با استفاده از نصب جهانی پایتون، میتوان بیش از یک محیط مجازی ایجاد کرد، که هر یک نسخه متفاوتی از یک کتابخانه را داشته باشند، بنابراین از تداخل جلوگیری میشود.
ایجاد محیطهای مجازی در پایتون با استفاده از 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 را اجرا کنید.