محیط مجازی (Virtual Environment)
محیط مجازی (Virtual Environment): اتاق کار شخصی شما 🛡️
فرض کنید میخواهید روی دو پروژه کار کنید: پروژه A نیاز به جنگو نسخه 3 داره و پروژه B نیاز به جنگو نسخه 4. اگر هر دو رو روی سیستم اصلی نصب کنید، تداخل پیش میاد! راه حل چیه؟ محیط مجازی.
محیط مجازی چیست؟ یک پوشه ایزوله است که پکیجهای پایتون هر پروژه رو جدا از بقیه نگه میداره. انگار برای هر پروژه یک کامپیوتر جداگانه دارید!
مراحل ساخت محیط مجازی
۱. ترمینال رو باز کنید و به پوشه پروژهتون برید.
۲. دستور ساخت محیط مجازی رو وارد کنید:
# ویندوز و مک/لینوکس
python -m venv myenv
۳. حالا باید فعالش کنید:
# ویندوز
myenv\Scripts\activate
# مک و لینوکس
source myenv/bin/activate
نشانه فعال شدن: وقتی محیط مجازی فعال بشه، اسمش (مثلاً
(myenv)) کنار خط فرمان ترمینال ظاهر میشه. همیشه قبل از نصب پکیجها چک کنید که فعال باشه!
خروج از محیط مجازی
هر وقت کارتون تموم شد، کافیه بنویسید:
deactivate
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
تمرین: ساخت و مدیریت محیط مجازی
Medium
سوال تمرین
🎯 تمرین عملی: اسکریپت مدیریت محیط مجازی
در این تمرین، یک اسکریپت مینویسیم که به صورت خودکار:
- یک محیط مجازی بسازه (اگر وجود نداشته باشه)
- دستورات فعالسازی رو برای سیستمعامل شما نمایش بده
- لیست پکیجهای نصب شده رو نمایش بده
راهنمایی: از ماژول os و subprocess برای اجرای دستورات استفاده کنید.
پاسخ تمرین
PYTHON
import os
import subprocess
import sys
def manage_virtualenv(env_name="myenv"):
env_path = os.path.join(os.getcwd(), env_name)
# چک کردن وجود محیط مجازی
if not os.path.exists(env_path):
print("📦 در حال ساخت محیط مجازی '" + env_name + "'...")
subprocess.run([sys.executable, "-m", "venv", env_name], check=True)
print("✅ محیط مجازی '" + env_name + "' ساخته شد!")
else:
print("✅ محیط مجازی '" + env_name + "' از قبل وجود دارد.")
# نمایش دستورات فعالسازی
print("
📝 برای فعال کردن محیط مجازی:")
if sys.platform == "win32":
print(" " + env_name + "\Scripts\activate")
else:
print(" source " + env_name + "/bin/activate")
print("
💡 بعد از فعال کردن، میتونید جنگو رو نصب کنید:")
print(" pip install django")
if __name__ == "__main__":
manage_virtualenv()
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.