🐍 کتابخانه مرجع پایتون

📦 محیط مجازی (venv) در پایتون

محیط مجازی (Virtual Environment) یک فضای ایزوله برای پروژه‌های پایتون است که به شما امکان می‌دهد وابستگی‌های (Dependencies) هر پروژه را به صورت جداگانه مدیریت کنید. با استفاده از محیط مجازی، می‌توانید از تداخل نسخه‌های مختلف کتابخانه‌ها در پروژه‌های مختلف جلوگیری کنید.

🔹 چرا به محیط مجازی نیاز داریم؟

🔹 ایجاد محیط مجازی

# ایجاد محیط مجازی با نام venv
python -m venv venv

# ایجاد با مسیر خاص
python -m venv /path/to/venv

# ایجاد با نسخه خاص پایتون
python3.10 -m venv venv

🔹 فعال‌سازی محیط مجازی

# Windows
venv\Scripts\activate

# Linux / macOS
source venv/bin/activate

# PowerShell (Windows)
.\venv\Scripts\Activate.ps1

# بعد از فعال‌سازی، نام محیط در ترمینال نمایش داده می‌شود
# (venv) C:\project>

🔹 غیرفعال‌سازی محیط مجازی

# غیرفعال‌سازی محیط فعلی
deactivate

# بعد از غیرفعال‌سازی، نام محیط از ترمینال حذف می‌شود

🔹 مدیریت پکیج‌ها با pip

# نصب پکیج در محیط فعال
pip install requests

# نصب نسخه خاص
pip install requests==2.28.0

# نصب چند پکیج
pip install numpy pandas matplotlib

# نصب از فایل requirements.txt
pip install -r requirements.txt

# مشاهده پکیج‌های نصب شده
pip list

# مشاهده اطلاعات یک پکیج
pip show requests

# حذف یک پکیج
pip uninstall requests

# بروزرسانی pip
pip install --upgrade pip

🔹 فایل requirements.txt

# ایجاد فایل requirements.txt از پکیج‌های نصب شده
pip freeze > requirements.txt

# محتوای نمونه requirements.txt
# requests==2.31.0
# numpy==1.24.3
# pandas==2.0.1
# matplotlib==3.7.1

# نصب پکیج‌ها از فایل
pip install -r requirements.txt

🔹 ساختار محیط مجازی

venv/
├── bin/                    # فایل‌های اجرایی (Linux/macOS)
│   ├── activate           # اسکریپت فعال‌سازی
│   ├── python             # مفسر پایتون محیط
│   └── pip                # pip محیط
├── Scripts/               # فایل‌های اجرایی (Windows)
│   ├── activate.bat       # اسکریپت فعال‌سازی
│   ├── python.exe         # مفسر پایتون محیط
│   └── pip.exe            # pip محیط
├── lib/                   # کتابخانه‌های نصب شده
│   └── pythonX.Y/
│       └── site-packages/ # پکیج‌های نصب شده
├── include/               # فایل‌های هدر
└── pyvenv.cfg             # تنظیمات محیط

🔹 مدیریت چندین محیط

# ایجاد محیط برای پروژه اول
cd project1
python -m venv venv
source venv/bin/activate
pip install requests
pip freeze > requirements.txt

# ایجاد محیط برای پروژه دوم
cd ../project2
python -m venv venv
source venv/bin/activate
pip install numpy pandas
pip freeze > requirements.txt

# جابه‌جایی بین محیط‌ها
# در project1: deactivate و سپس source ../project2/venv/bin/activate

🔹 حذف محیط مجازی

# غیرفعال‌سازی محیط
deactivate

# حذف پوشه محیط
# Windows/Linux/macOS
rm -rf venv

# یا در Windows (PowerShell)
Remove-Item -Recurse -Force venv

🔹 محیط مجازی در VS Code

# VS Code به صورت خودکار محیط‌های مجازی را تشخیص می‌دهد

# انتخاب محیط در VS Code:
# Ctrl+Shift+P → Python: Select Interpreter
# انتخاب venv/bin/python

# یا تنظیم در settings.json:
{
    "python.defaultInterpreterPath": "${workspaceFolder}/venv/bin/python"
}

🔹 کار با pipenv (جایگزین پیشرفته)

# نصب pipenv
pip install pipenv

# ایجاد محیط با pipenv
pipenv install

# نصب پکیج در محیط
pipenv install requests

# نصب پکیج برای توسعه (dev)
pipenv install --dev pytest

# فعال‌سازی محیط
pipenv shell

# اجرای دستور در محیط
pipenv run python script.py

# حذف پکیج
pipenv uninstall requests

# مشاهده وابستگی‌ها
pipenv graph

# حذف محیط
pipenv --rm

🔹 مثال جامع: راه‌اندازی یک پروژه با محیط مجازی

# ۱. ایجاد پوشه پروژه
mkdir my_project
cd my_project

# ۲. ایجاد محیط مجازی
python -m venv venv

# ۳. فعال‌سازی محیط
# Windows:
venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# ۴. نصب پکیج‌های مورد نیاز
pip install requests pandas numpy matplotlib

# ۵. ایجاد فایل requirements.txt
pip freeze > requirements.txt

# ۶. ایجاد فایل main.py
echo 'import requests
import pandas as pd

print("Project started successfully!")' > main.py

# ۷. اجرای پروژه
python main.py

# ۸. غیرفعال‌سازی محیط
deactivate

# ۹. اشتراک‌گذاری پروژه (فایل requirements.txt)
# دیگران می‌توانند با دستور زیر محیط را بازسازی کنند:
# pip install -r requirements.txt

📌 نکات کلیدی

← قبلی: تست با unittest → بعدی: فهرست متوسط ↑ بازگشت به فهرست متوسط