محیط مجازی در پایتون چیست؟
محیط مجازی یا Virtual Environment یک محیط مستقل برای اجرای یک پروژه پایتون است.
در این محیط میتوانیم کتابخانهها و وابستگیهای مورد نیاز یک پروژه را جدا از سایر پروژهها نصب و مدیریت کنیم.
این موضوع زمانی اهمیت بیشتری پیدا میکند که چند پروژه مختلف داشته باشیم و هر پروژه به نسخه یا مجموعه متفاوتی از کتابخانهها نیاز داشته باشد.
چرا از Virtual Environment استفاده کنیم؟
فرض کنید برای یک پروژه به نسخه خاصی از یک کتابخانه نیاز داریم، اما پروژه دیگری به نسخه متفاوتی از همان کتابخانه احتیاج دارد.
اگر همه کتابخانهها را مستقیماً در محیط اصلی Python نصب کنیم، مدیریت وابستگیهای پروژهها میتواند دشوار شود.
با Virtual Environment میتوانیم برای هر پروژه محیط جداگانهای داشته باشیم.
- جلوگیری از تداخل کتابخانهها
- مدیریت بهتر وابستگیهای هر پروژه
- امکان استفاده از نسخههای متفاوت کتابخانهها
- ساخت محیط تمیز برای پروژه
- مناسب برای کار با VS Code و پروژههای واقعی
venv در پایتون چیست؟
پایتون یک ابزار داخلی به نام
venv
دارد که برای ساخت محیط مجازی استفاده میشود.
بنابراین برای ساخت یک محیط مجازی ساده، معمولاً نیازی به نصب کتابخانه جداگانه نداریم.
ساخت Virtual Environment در ویندوز
ابتدا وارد پوشه پروژه خود شوید. سپس ترمینال VS Code یا Command Prompt را باز کنید.
برای ساخت محیط مجازی دستور زیر را اجرا کنید:
python -m venv .venv
در این دستور:
-
pythonمفسر پایتون را اجرا میکند. -
-m venvماژول داخلی venv را اجرا میکند. -
.venvنام پوشه محیط مجازی است.
بعد از اجرای دستور، پوشهای با نام
.venv
در پروژه ایجاد میشود.
فعال کردن محیط مجازی در Command Prompt
اگر از Command Prompt ویندوز استفاده میکنید، دستور زیر را اجرا کنید:
.venv\Scripts\activate
اگر فعالسازی با موفقیت انجام شود، معمولاً نام محیط مجازی را در ابتدای خط فرمان مشاهده میکنید:
(.venv) C:\MyProject>
فعال کردن محیط مجازی در PowerShell
در PowerShell میتوانید از دستور زیر استفاده کنید:
.venv\Scripts\Activate.ps1
در بعضی سیستمهای ویندوز ممکن است PowerShell به دلیل تنظیمات Execution Policy اجازه اجرای اسکریپت فعالسازی را ندهد.
در چنین شرایطی میتوان از Command Prompt استفاده کرد یا تنظیمات PowerShell را متناسب با محیط توسعه بررسی کرد.
چگونه بفهمیم محیط مجازی فعال شده است؟
بعد از فعالسازی، میتوانیم مسیر Python را بررسی کنیم.
در ویندوز دستور زیر را اجرا کنید:
where python
اگر محیط مجازی فعال باشد، معمولاً مسیر Python موجود
در پوشه
.venv
نیز نمایش داده میشود.
همچنین میتوانید نسخه Python را بررسی کنید:
python --version
نصب کتابخانه داخل Virtual Environment
بعد از فعال کردن محیط مجازی، میتوانیم کتابخانههای مورد نیاز پروژه را با pip نصب کنیم.
برای مثال:
pip install requests
در این حالت کتابخانه در محیط مجازی پروژه نصب میشود و با سایر پروژهها تداخل کمتری خواهد داشت.
یک مثال ساده با requests
ابتدا محیط مجازی را ایجاد و فعال کنید:
python -m venv .venv
.venv\Scripts\activate
سپس کتابخانه requests را نصب کنید:
pip install requests
حالا میتوانیم یک فایل به نام
main.py
بسازیم:
import requests
response = requests.get("https://example.com")
print(response.status_code)
این پروژه اکنون کتابخانه مورد نیاز خود را در محیط مجازی خودش دارد.
استفاده از Virtual Environment در VS Code
VS Code میتواند محیط مجازی پروژه را شناسایی کند.
برای انتخاب Python Interpreter میتوانید از Command Palette استفاده کنید:
Ctrl + Shift + P
سپس عبارت زیر را جستجو کنید:
Python: Select Interpreter
در فهرست نمایش داده شده،
Python مربوط به پوشه
.venv
پروژه را انتخاب کنید.
فایل requirements.txt چیست؟
فایل
requirements.txt
معمولاً برای ثبت کتابخانهها و نسخههای مورد نیاز یک پروژه
استفاده میشود.
برای ایجاد این فایل میتوانیم از دستور زیر استفاده کنیم:
pip freeze > requirements.txt
سپس شخص دیگری میتواند وابستگیهای پروژه را با دستور زیر نصب کند:
pip install -r requirements.txt
خروج از Virtual Environment
برای خارج شدن از محیط مجازی کافی است دستور زیر را اجرا کنید:
deactivate
بعد از اجرای این دستور، محیط مجازی غیرفعال میشود.
حذف Virtual Environment
محیط مجازی در واقع یک پوشه در پروژه است.
بنابراین برای حذف آن میتوانید پوشه
.venv
را حذف کنید.
حذف محیط مجازی، فایلهای اصلی پروژه را حذف نمیکند، اما کتابخانههایی که فقط داخل آن محیط نصب شدهاند دیگر در دسترس آن محیط نخواهند بود.
آیا باید پوشه .venv را در Git قرار دهیم؟
معمولاً بهتر است پوشه
.venv
را مستقیماً در مخزن Git قرار ندهیم.
به جای آن میتوان نام پوشه را در فایل
.gitignore
قرار داد:
.venv/
سپس وابستگیهای پروژه را در
requirements.txt
نگهداری کرد.
تفاوت Python اصلی و Virtual Environment
| Python اصلی | Virtual Environment |
|---|---|
| محیط عمومی سیستم | محیط جداگانه برای پروژه |
| کتابخانهها ممکن است بین پروژهها مشترک باشند | وابستگیهای پروژه جدا نگهداری میشوند |
| مدیریت چند پروژه سختتر میشود | مدیریت پروژهها سادهتر میشود |
خطاهای رایج Virtual Environment
خطای فعال نشدن PowerShell
اگر PowerShell اجازه اجرای
Activate.ps1
را ندهد، مشکل معمولاً مربوط به Execution Policy است.
در چنین شرایطی میتوانید از Command Prompt استفاده کنید یا تنظیمات اجرای اسکریپت PowerShell را بررسی کنید.
دستور python شناخته نمیشود
اگر ویندوز دستور
python
را پیدا نمیکند، ابتدا نصب بودن Python و تنظیم PATH
را بررسی کنید.
برای بررسی نسخه Python:
python --version
محیط مجازی ایجاد نمیشود
ابتدا بررسی کنید Python به درستی نصب شده باشد. سپس دستور زیر را امتحان کنید:
python -m venv .venv
روند پیشنهادی برای یک پروژه Python
یک روند ساده برای شروع پروژه میتواند به این شکل باشد:
mkdir my-project
cd my-project
python -m venv .venv
سپس محیط مجازی را فعال کنید:
.venv\Scripts\activate
کتابخانههای مورد نیاز را نصب کنید:
pip install requests
و در پایان وابستگیها را ذخیره کنید:
pip freeze > requirements.txt
تمرین عملی
برای تمرین، یک پروژه جدید به نام
weather-project
ایجاد کنید.
- یک Virtual Environment بسازید.
- آن را فعال کنید.
- کتابخانه requests را نصب کنید.
-
یک فایل
main.pyایجاد کنید. - نسخه requests را بررسی کنید.
-
فایل
requirements.txtایجاد کنید. - در پایان محیط مجازی را غیرفعال کنید.
جمعبندی
Virtual Environment یکی از ابزارهای مهم برای مدیریت پروژههای پایتون است.
-
venvبرای ساخت محیط مجازی استفاده میشود. - هر پروژه میتواند محیط مجازی مستقل خودش را داشته باشد.
- کتابخانهها را میتوان داخل محیط مجازی نصب کرد.
-
requirements.txtبرای ثبت وابستگیهای پروژه کاربرد دارد. -
پوشه
.venvمعمولاً نباید وارد Git شود.
سوالات متداول
آیا Virtual Environment برای پایتون ضروری است؟
برای برنامههای بسیار ساده الزامی نیست، اما برای پروژههای واقعی استفاده از محیط مجازی روش مناسبی برای مدیریت وابستگیهاست.
آیا venv را باید جداگانه نصب کنیم؟
venv به صورت ماژول استاندارد پایتون ارائه میشود و در نصبهای معمول Python در دسترس است.
نام محیط مجازی حتماً باید .venv باشد؟
خیر. میتوانید نام دیگری انتخاب کنید؛
.venv
فقط یک نام رایج برای محیط مجازی پروژه است.
آیا Virtual Environment باعث نصب دوباره Python میشود؟
Virtual Environment یک محیط جداگانه برای پروژه ایجاد میکند و هدف اصلی آن جداسازی وابستگیها و پکیجهای پروژه است.