در نظر گرفتن یک سناریو
فرض کنیم، در حال کار روی یک پروژهی پایتونی ساده هستیم. همچنین، ورژن پایتون برای کاری که داریم انجام میدهیم هم مهم نیست. بسیار راحت با اجرای دستور زیر یک محیط مجازی میسازیم و بعد از فعالسازی، داخل اون محیط، پروژه رو توسعه میدهیم؛
python -m venv .projectX
حال این محیط را با دستور زیر (در پاورشل یا CMD ویندوز) فعال میکنیم:
.projectX\Scripts\activate
اگر در لینوکس هستیم باید دستور زیر را جهت فعال کردن محیط اجرا کنیم:
source .projectX/bin/activate
اما کمی که زمان میگذرد متوجه میشویم اونقدرها هم که فکر میکردیم کار ساده نبود. کدها درست کار نمیکنند، چون عمومن فقط اونها رو از جاهای مختلف کپی کردیم. متوجه میشیم که کد رو باید با چند ورژن از پایتون تست و بررسی کنیم. اینجا دیگه ماژول ویاِنو (venv) مناسب نیست. چون با این ماژول فقط میتونیم ورژنی از پایتون که در سیستم داریم رو برای محیط مجازی داشته باشیم. یعنی اگر پایتون ما ۳.۱۲ باشد، هر محیط مجازی که با این ماژول ساخته بشود، ورژن پایتونش ۳.۱۲ است.
اما اگر کوندا (conda) رو داشته باشیم داستان خیلی حرفهایتر خواهد شد، چون کوندا بما اجازه میدهد که برای هر محیط مجازی، هر ورژنی از پایتون که مد نظر ماست، تنظیم و نصب شود. مثلن من با سه دستور زیر، سه محیط مجازی با ورژنهای مختلف پایتون (به ترتیب از ۳.۱۰ تا ۳.۱۲) میسازم و پروژهی خودم رو به نوبت در اونها تست میکنم؛
conda create -n .projectX310 python=3.10 conda create -n .projectX311 python=3.11 conda create -n projectX312 python=3.12
برای فعالسازی محیط ایجاد شده با کوندا نیز از دستور زیر (در هر دو سیستم عامل ویندوز و لینوکس) استفاده میکنیم:
conda activate projectX312
پس بطور خلاصه، با ویاِنو ما نمیتونیم ورژن دلخواه از پایتون رو داشته باشیم ولی کوندا این ویژگی رو براحتی در اختیار ما قرار میدهد. از نظر بنده همین فرق بسیار اساسی بوده و ارزش این رو دارد که حداقل مینیکوندا را در سیستم شخصی خودمون نصب داشته باشیم.
نکتهی پایانی
اگر ما در سیستم خود چند ورژن از پایتون را نصب داشته باشیم، میتوانیم محیطهای مجازی با همان ورژنهایی از پایتون که داخل سیستم نصب است، بسازیم. اما این امر نسبت به اینکه از کوندا استفاده کنیم، کمی سختتر است. چون در هر مرحله باید آن نسخه از پایتون که مد نظر ما است را به مسیر فایلهای اجرایی (Path) سیستم بیافزائیم.