فصل ۱: شروع درست — نصب، ابزارها و محیط مجازی

محیط مجازی venv در PowerShell: چرا، چطور و دام ExecutionPolicy

هر پروژه، جعبه‌ی خودش

فرض کنید پروژه‌ی A به Django 4.2 نیاز دارد و پروژه‌ی B به Django 5.1. اگر هر دو کتابخانه را در پایتون اصلی سیستم نصب کنید، فقط یکی می‌تواند وجود داشته باشد. محیط مجازی (virtual environment) یک پوشه است که یک کپی سبک از مفسر و پوشه‌ی مخصوص کتابخانه‌ها را در خود دارد؛ هر پروژه کتابخانه‌های خودش را دارد و به بقیه دست نمی‌زند. قاعده‌ی حرفه‌ای ساده است: برای هر پروژه یک venv، و هیچ‌وقت نصب در پایتون سراسری.

ساخت و فعال‌سازی در PowerShell

cd D:\projects\carpet-orders
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python --version
python -c "import sys; print(sys.prefix)"

بعد از فعال‌سازی، ابتدای خط فرمان (.venv) ظاهر می‌شود و دستور python به مفسر داخل پوشه‌ی .venv اشاره می‌کند. برای خروج کافی است deactivate را بزنید. نام .venv یک قرارداد رایج است و VS Code آن را خودکار تشخیص می‌دهد.

خطای «running scripts is disabled on this system»

ویندوز به‌طور پیش‌فرض اجرای اسکریپت‌های PowerShell (از جمله Activate.ps1) را ممنوع می‌کند. راه‌حل امن این است که فقط برای کاربر خودتان اجازه‌ی اسکریپت‌های محلی را بدهید:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Get-ExecutionPolicy -List

RemoteSigned یعنی اسکریپت‌هایی که روی سیستم خودتان ساخته شده‌اند اجرا می‌شوند، ولی اسکریپت دانلودشده از اینترنت باید امضا داشته باشد. این دستور نیاز به Administrator ندارد و فقط یک بار لازم است. اگر سازمانتان با Group Policy این تنظیم را قفل کرده، می‌توانید برای یک جلسه‌ی موقت از Set-ExecutionPolicy -Scope Process Bypass استفاده کنید.

ساختار پوشه‌ی venv

مسیرمحتوا
.venv\Scripts\python.exeمفسر محیط (در لینوکس و مک: .venv/bin/python)
.venv\Scripts\Activate.ps1اسکریپت فعال‌سازی PowerShell (برای cmd: activate.bat)
.venv\Lib\site-packagesکتابخانه‌های نصب‌شده‌ی همین پروژه
.venv\pyvenv.cfgمسیر پایتون پایه و نسخه‌ی آن

venv را جزو پروژه حساب نکنید

پوشه‌ی .venv قابل‌انتقال نیست: مسیرهای مطلق داخلش نوشته شده است. آن را در .gitignore بگذارید، کپی نکنید و در زیپ پروژه نفرستید. آنچه باید منتقل شود فهرست کتابخانه‌هاست (requirements.txt، درس بعد)؛ هرکس با آن می‌تواند در یک دقیقه محیط را از نو بسازد. اگر venv خراب شد یا نسخه‌ی پایتون را عوض کردید، ساده‌ترین راه حذف پوشه و ساخت دوباره است.

نکته‌هایی که کمتر کسی می‌داند

  • فعال‌سازی اجباری نیست: .\.venv\Scripts\python.exe script.py همان کار را می‌کند. در Task Scheduler و سرویس‌های ویندوز همیشه همین مسیر کامل را بدهید، چون آن‌جا کسی Activate نمی‌کند.
  • اگر پوشه‌ی پروژه را جابه‌جا یا تغییر نام دهید، venv نیمه‌خراب می‌شود (pip به مسیر قدیمی اشاره می‌کند)؛ به‌جای تعمیر، آن را دوباره بسازید.
  • py -m venv .venv --upgrade-deps هنگام ساخت، pip داخل محیط را هم به آخرین نسخه ارتقا می‌دهد.
  • VS Code وقتی پوشه‌ی .venv را در ریشه‌ی پروژه ببیند، ترمینال‌های جدید را خودکار فعال می‌کند؛ اگر نکرد، یک‌بار Select Interpreter را روی همان venv بزنید.
  • در cmd قدیمی به‌جای Activate.ps1 باید .venv\Scripts\activate.bat اجرا شود و ExecutionPolicy آن‌جا اصلاً مطرح نیست.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.