Homeنکات و ترفندهای برنامه‌نویسیPython Virtual Environment چیست؟ راهنمای کامل venv و conda ۲۰۲۵ | آکادمی تک

Python Virtual Environment چیست؟ راهنمای کامل venv و conda ۲۰۲۵ | آکادمی تک

محیط مجازی پایتون (Python Virtual Environment) — آموزش venv, pipenv, Poetry, conda و uv

 

Python Virtual Environment چیست و چرا ضروری است؟

محیط مجازی پایتون (Python Virtual Environment) یکی از پایه‌ای‌ترین و ضروری‌ترین مفاهیم توسعه نرم‌افزار با Python است که هر برنامه‌نویسی باید آن را یاد بگیرد.

دسته‌بندی: پایتون از صفر  |  سطح: مبتدی تا متوسط  |  زمان مطالعه: ۱۵ دقیقه  |  ۱۴۰۴

 

📌 خلاصه سریع:

محیط مجازی پایتون (Python Virtual Environment) یک پوشه ایزوله است که برای هر پروژه، نسخه Python و پکیج‌های همان پروژه را جدا از بقیه سیستم نگه می‌دارد. با این کار می‌توانید چند پروژه با نسخه‌های متفاوت از Django یا هر کتابخانه دیگر را بدون تداخل روی یک سیستم اجرا کنید. رایج‌ترین ابزارها برای ساخت محیط مجازی پایتون: venv، pipenv، Poetry، conda و uv.

 

 

مقدمه: یک مشکل آشنا

تصور کنید دو پروژه Python دارید:

  • پروژه A: یک وب‌اپ قدیمی که به Django 3.2 نیاز دارد
  • پروژه B: یک پروژه جدید که به Django 4.2 نیاز دارد

بدون محیط مجازی، هر دو نسخه Django را نمی‌توانید همزمان داشته باشید. نصب Django 4.2 باعث می‌شود پروژه A خراب شود. این دقیقاً مشکلی است که Virtual Environment حل می‌کند.

 

  💡  Virtual Environment به زبان ساده:

یک پوشه ایزوله روی سیستم شما که Python و پکیج‌های مخصوص یک پروژه را جداگانه نگه می‌دارد.

مثل اینکه هر پروژه سیستم‌عامل Python مخصوص خودش داشته باشد — بدون تداخل با بقیه.

 

 

چرا Virtual Environment ضروری است؟

قبل از هر چیز، بدون محیط مجازی چه اتفاقی می‌افتد؟

  ❌ بدون Virtual Environment  ✅ با Virtual Environment
# همه پروژه‌ها یک Python دارند

pip install django==3.2

pip install django==4.2

# ❌ نسخه 3.2 پاک می‌شود!

 

pip install numpy==1.23

pip install numpy==1.26

# ❌ همان مشکل!

 

# پروژه A یا B خراب است

# هر پروژه محیط جداگانه دارد

 

# پروژه A:

source projectA/bin/activate

pip install django==3.2  # ✅

 

# پروژه B:

source projectB/bin/activate

pip install django==4.2  # ✅

# هر دو کار می‌کنند!

 

پنج دلیل کلیدی برای استفاده از Virtual Environment:

  • جداسازی وابستگی‌ها: هر پروژه فقط پکیج‌های خودش را دارد
  • جلوگیری از تداخل نسخه‌ها: چندین نسخه از یک پکیج روی یک سیستم
  • بازتولیدپذیری: با requirements.txt پروژه را روی هر سیستمی بازسازی کنید
  • امنیت سیستم: پکیج‌ها به Python سیستم‌عامل آسیب نمی‌زنند
  • کار تیمی: همه اعضای تیم دقیقاً همان نسخه‌های پکیج را دارند

 

 

📘  بخش اول: venv — ابزار داخلی Python

 

venv از Python 3.3 به بعد به‌صورت داخلی در Python است — نیازی به نصب جداگانه ندارد. برای اکثر پروژه‌ها، venv کافی است. اگر هنوز Python را روی سیستم خود نصب نکرده‌اید، ابتدا راهنمای کامل نصب Python را ببینید.

 

ساخت و فعال‌سازی venv

ویندوز

  Windows CMD / PowerShell
# ساخت محیط مجازی (نام دلخواه، معمولاً venv یا .venv)

python -m venv myenv

 

# فعال‌سازی

myenv\Scripts\activate

 

# بعد از فعال‌سازی، پرامپت تغییر می‌کند:

(myenv) C:\Users\Ali\myproject>

 

# غیرفعال‌سازی

deactivate

 

مک و لینوکس

  macOS / Linux (bash/zsh)
# ساخت محیط مجازی

python3 -m venv myenv

 

# فعال‌سازی

source myenv/bin/activate

 

# بعد از فعال‌سازی:

(myenv) ali@computer:~/myproject$

 

# غیرفعال‌سازی

deactivate

 

  💡  نام‌گذاری محیط مجازی:

معمولاً از نام‌های .venv یا venv استفاده می‌شود

نقطه قبل از نام (.venv) باعث می‌شود پوشه مخفی باشد (در مک و لینوکس)

این پوشه را هیچ‌وقت در Git commit نکنید — در .gitignore اضافه کنید

 

 

کار با pip در محیط مجازی پایتون

# مطمئن شوید محیط مجازی فعال است: (myenv) باید در پرامپت باشد

 

# نصب پکیج

pip install requests

pip install django==4.2

pip install numpy pandas matplotlib

 

# نصب نسخه خاص

pip install flask==3.0.0

 

# لیست پکیج‌های نصب‌شده

pip list

 

# اطلاعات یک پکیج

pip show django

 

# حذف پکیج

pip uninstall requests

 

# به‌روزرسانی پکیج

pip install –upgrade pip

pip install –upgrade django

 

requirements.txt — قلب اشتراک‌گذاری پروژه

requirements.txt لیستی از تمام پکیج‌ها و نسخه‌های مورد نیاز پروژه است. با این فایل، هر کسی می‌تواند پروژه شما را روی هر سیستمی بازسازی کند:

# ذخیره همه پکیج‌های نصب‌شده

pip freeze > requirements.txt

 

# محتوای requirements.txt:

# Django==4.2.0

# requests==2.31.0

# numpy==1.26.0

# …

 

# نصب روی سیستم جدید یا پروژه همکار

pip install -r requirements.txt

 

# نصب بدون نسخه دقیق (انعطاف‌پذیرتر)

pip install -r requirements.txt –upgrade

 

ساختار پیشنهادی requirements

# requirements.txt — وابستگی‌های اصلی

Django==4.2.0

requests==2.31.0

Pillow>=10.0.0

 

# requirements-dev.txt — فقط برای توسعه

-r requirements.txt

pytest==7.4.0

black==23.7.0

mypy==1.5.0

flake8==6.1.0

 

# requirements-prod.txt — فقط برای Production

-r requirements.txt

gunicorn==21.2.0

psycopg2-binary==2.9.7

 

بهترین ساختار پوشه‌بندی پروژه با venv

my_project/

├── .venv/              ← محیط مجازی (در .gitignore باشد)

├── .gitignore

├── requirements.txt

├── requirements-dev.txt

├── README.md

├── src/

│   ├── __init__.py

│   └── main.py

└── tests/

└── test_main.py

 

# .gitignore — این خطوط ضروری هستند

.venv/

venv/

env/

__pycache__/

*.pyc

.env

*.egg-info/

dist/

build/

 

 

📗  بخش دوم: ابزارهای پیشرفته‌تر مدیریت محیط

 

venv برای اکثر پروژه‌ها کافی است. اما ابزارهای پیشرفته‌تری وجود دارند که مدیریت وابستگی را ساده‌تر، ایمن‌تر و قدرتمندتر می‌کنند.

 

pipenv — ترکیب pip و venv

📦  pipenv   ترکیب pip + venv در یک ابزار

  نصب:  pip install pipenv

  مزیت اصلی:  مدیریت همزمان محیط مجازی و وابستگی‌ها

  فایل اصلی:  Pipfile و Pipfile.lock

  مناسب برای:  پروژه‌های متوسط، تیم‌های کوچک

 

 

# نصب pipenv

pip install pipenv

 

# ساخت محیط و نصب پکیج همزمان

pipenv install django

 

# نصب پکیج فقط برای توسعه

pipenv install pytest –dev

 

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

pipenv shell

 

# اجرای دستور بدون فعال‌سازی

pipenv run python main.py

 

# نصب از Pipfile

pipenv install

 

# نصب همراه وابستگی‌های توسعه

pipenv install –dev

 

# لیست وابستگی‌ها به صورت درختی

pipenv graph

 

Pipfile در مقابل requirements.txt:

  requirements.txt  Pipfile (pipenv)
Django==4.2.0

requests==2.31.0

numpy==1.26.4

 

# همه در یک فایل

# توسعه و production

# مخلوط هم هستند

[packages]

django = ‘==4.2’

requests = ‘*’

 

[dev-packages]

pytest = ‘*’

black = ‘*’

 

# جداسازی dev/prod

 

Poetry — مدیریت حرفه‌ای پروژه Python

🎸  Poetry   استاندارد مدرن برای پروژه‌های Python جدی

  نصب:  curl -sSL https://install.python-poetry.org | python3 –

  مزیت اصلی:  مدیریت کامل پروژه، build، publish در یک ابزار

  فایل اصلی:  pyproject.toml

  مناسب برای:  Library ها، پروژه‌های بزرگ، انتشار در PyPI

 

 

# نصب Poetry

curl -sSL https://install.python-poetry.org | python3 –

 

# ساخت پروژه جدید

poetry new my-project

 

# شروع در پروژه موجود

poetry init

 

# نصب پکیج

poetry add django

poetry add pytest –group dev

 

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

poetry shell

 

# نصب همه وابستگی‌ها

poetry install

 

# اجرای دستور

poetry run python main.py

 

# به‌روزرسانی وابستگی‌ها

poetry update

 

# ساخت package برای PyPI

poetry build

poetry publish

 

فایل pyproject.toml که Poetry می‌سازد:

[tool.poetry]

name = ‘my-project’

version = ‘0.1.0’

description = ‘پروژه نمونه’

authors = [‘Ali <ali@example.com>’]

 

[tool.poetry.dependencies]

python = ‘^3.12’

django = ‘^4.2’

requests = ‘^2.31’

 

[tool.poetry.group.dev.dependencies]

pytest = ‘^7.4’

black = ‘^23.7’

mypy = ‘^1.5’

 

[build-system]

requires = [‘poetry-core’]

build-backend = ‘poetry.core.masonry.api’

 

conda — مدیریت محیط برای Data Science

🐍  conda / Miniconda   مدیریت محیط و پکیج برای علم داده

  نصب:  نصب Miniconda

  مزیت اصلی:  مدیریت نسخه Python + پکیج‌های غیر-Python (C، R، …)

  فایل اصلی:  environment.yml

  مناسب برای:  Data Science، ML، پروژه‌های علمی

 

 

# ساخت محیط با نسخه Python مشخص

conda create -n myenv python=3.12

 

# فعال‌سازی

conda activate myenv

 

# نصب پکیج

conda install numpy pandas scikit-learn

conda install -c conda-forge matplotlib

 

# نصب با pip هم ممکن است

pip install some-package

 

# لیست محیط‌ها

conda env list

 

# ذخیره محیط

conda env export > environment.yml

 

# بازسازی محیط از فایل

conda env create -f environment.yml

 

# حذف محیط

conda remove -n myenv –all

 

# غیرفعال‌سازی

conda deactivate

 

فایل environment.yml:

name: myenv

channels:

– conda-forge

– defaults

dependencies:

– python=3.12

– numpy=1.26

– pandas=2.1

– scikit-learn=1.3

– matplotlib=3.8

– pip:

– some-pip-package==1.0

 

uv — سریع‌ترین ابزار جدید (۲۰۲۵)

⚡  uv   جایگزین سریع pip، venv و poetry — نوشته‌شده با Rust

  نصب:  pip install uv  یا  curl -LsSf https://astral.sh/uv/install.sh | sh

  سرعت:  10-100 برابر سریع‌تر از pip

  مزیت:  جایگزین pip، venv و poetry در یک ابزار

  وضعیت:  در حال رشد سریع — ۲۰۲۵

 

 

# نصب uv

pip install uv

 

# ساخت و فعال‌سازی محیط

uv venv

source .venv/bin/activate  # Linux/Mac

.venv\Scripts\activate     # Windows

 

# نصب پکیج — 10-100 برابر سریع‌تر از pip

uv pip install django numpy pandas

 

# نصب از requirements.txt

uv pip install -r requirements.txt

 

# مدیریت پروژه (مثل poetry)

uv init my-project

uv add django

uv run python main.py

 

 

🔍  بخش سوم: مقایسه ابزارها و راهنمای انتخاب

 

جدول مقایسه کامل ابزارهای محیط مجازی پایتون

ابزارپیچیدگیسرعتفایل پیکربندیمناسب برای
venvخیلی کممتوسطrequirements.txtمبتدیان، پروژه‌های ساده
pipenvکمکمPipfileپروژه‌های متوسط
Poetryمتوسطمتوسطpyproject.tomlپروژه‌های بزرگ، Library
condaمتوسطمتوسطenvironment.ymlData Science، ML
uvکم⚡ خیلی زیادpyproject.tomlپروژه‌های جدید، ۲۰۲۵

 

راهنمای انتخاب ابزار محیط مجازی پایتون

شرایط شماتوصیه
تازه یادگیری Python شروع کرده‌امvenv — ساده‌ترین، داخلی Python، نیاز به نصب ندارد
پروژه وب (Django، Flask، FastAPI)venv یا Poetry
Data Science و یادگیری ماشینconda — مدیریت نسخه Python + پکیج‌های علمی
می‌خواهم Library بسازم و در PyPI منتشر کنمPoetry — بهترین ابزار برای publish
می‌خواهم سریع‌ترین ابزار را داشته باشمuv — ۲۰۲۵، نوشته‌شده با Rust
کار تیمی با GitHub Actions یا CI/CDPoetry یا pip + requirements.txt
Jupyter Notebook و تحقیقات علمیconda یا venv + pip

 

 

🚀  بخش چهارم: جریان کاری کامل پروژه

 

از صفر تا پروژه آماده — با venv

یک جریان کاری کامل و حرفه‌ای برای شروع هر پروژه Python:

 

  1. ساخت پوشه پروژه:
mkdir my_project

cd my_project

  1. ساخت محیط مجازی:
python -m venv .venv

 

# یا با نسخه Python مشخص:

python3.12 -m venv .venv

  1. فعال‌سازی:
# Windows:

.venv\Scripts\activate

 

# Mac / Linux:

source .venv/bin/activate

 

# تأیید — باید (.venv) در پرامپت باشد

which python  # Mac/Linux

where python  # Windows

  1. ساخت .gitignore:
# .gitignore

.venv/

__pycache__/

*.pyc

.env

*.egg-info/

.DS_Store

  1. نصب پکیج‌های مورد نیاز:
pip install django requests pillow

pip install pytest black mypy –upgrade

  1. ذخیره وابستگی‌ها:
pip freeze > requirements.txt

 

# یا دستی برای کنترل بیشتر:

# django>=4.2,<5.0

# requests>=2.31

  1. شروع کدنویسی و commit:
git init

git add .gitignore requirements.txt

git commit -m ‘Initial project setup’

 

اضافه شدن همکار جدید به پروژه

# clone پروژه

git clone https://github.com/username/my_project.git

cd my_project

 

# ساخت محیط مجازی جدید

python -m venv .venv

source .venv/bin/activate  # یا Windows equivalent

 

# نصب همه وابستگی‌ها

pip install -r requirements.txt

 

# آماده کدنویسی!

python main.py

 

تنظیم VS Code با محیط مجازی

VS Code باید بداند از کدام Python استفاده کند:

  1. Ctrl+Shift+P را بزنید
  2. «Python: Select Interpreter» را انتخاب کنید
  3. محیط مجازی پروژه را انتخاب کنید: ./.venv/bin/python
  4. حالا VS Code از محیط مجازی پروژه استفاده می‌کند

 

# یا در settings.json پروژه:

{

“python.defaultInterpreterPath”: “.venv/bin/python”,

“python.terminal.activateEnvironment”: true

}

 

 

⚡  بخش پنجم: نکات حرفه‌ای

 

نکته ۱: هیچ‌وقت محیط مجازی را در Git نگذارید

  🚨  قانون طلایی:

پوشه venv، .venv یا env را هیچ‌وقت commit نکنید.

این پوشه می‌تواند صدها مگابایت باشد و روی سیستم دیگران کار نمی‌کند.

به جایش requirements.txt یا pyproject.toml را commit کنید.

 

 

نکته ۲: فرق pip freeze و pip list

  pip list  pip freeze
Package    Version

———- ——-

django     4.2.0

pip        23.2.1

requests   2.31.0

setuptools 68.0.0

 

# همه چیز را نشان می‌دهد

# شامل pip و setuptools

django==4.2.0

requests==2.31.0

 

# فقط پکیج‌های نصب‌شده

# برای requirements.txt

# pip و setuptools نیستند

# فرمت مناسب برای install

 

نکته ۳: pip-tools برای مدیریت بهتر

pip-tools ابزاری است که وابستگی‌های مستقیم و غیرمستقیم را جدا می‌کند:

pip install pip-tools

 

# requirements.in — فقط وابستگی‌های مستقیم

django>=4.2

requests

pillow

 

# تولید requirements.txt کامل با نسخه‌های دقیق

pip-compile requirements.in

 

# به‌روزرسانی

pip-compile –upgrade requirements.in

 

# نصب

pip-sync requirements.txt

 

نکته ۴: چک کردن وضعیت محیط مجازی پایتون

# آیا محیط مجازی فعال است؟

which python          # Mac/Linux — باید مسیر .venv باشد

where python          # Windows

 

# نمایش اطلاعات Python فعلی

python –version

python -c “import sys; print(sys.prefix)”

 

# پکیج‌های قدیمی را پیدا کن

pip list –outdated

 

# بررسی امنیتی پکیج‌ها

pip audit

 

# اندازه پکیج‌ها

pip list –format=columns

 

نکته ۵: متغیرهای محیطی با python-dotenv

برای نگه‌داری کلیدهای API، رمز دیتابیس و تنظیمات حساس، از فایل .env استفاده کنید:

pip install python-dotenv

 

# .env — این فایل را در .gitignore بگذارید!

DATABASE_URL=postgresql://localhost/mydb

SECRET_KEY=my-super-secret-key

DEBUG=True

API_KEY=sk-1234567890

 

# در کد Python:

from dotenv import load_dotenv

import os

 

load_dotenv()  # بارگذاری از .env

 

database_url = os.getenv(‘DATABASE_URL’)

secret_key = os.getenv(‘SECRET_KEY’)

  🔐  امنیت فایل .env:

فایل .env را همیشه در .gitignore قرار دهید

یک فایل .env.example (بدون مقادیر واقعی) برای تیم بسازید

در محیط Production از Environment Variables سرور استفاده کنید، نه .env

 

 

 

سوالات متداول (FAQ)

چه تفاوتی بین venv و virtualenv است؟

virtualenv ابزار قدیمی‌تری است که باید جداگانه نصب می‌شد. از Python 3.3 به بعد، venv به‌صورت داخلی اضافه شد و برای اکثر کاربردها کافی است. virtualenv هنوز مزایایی دارد (مثل سرعت بیشتر و پشتیبانی از Python 2) اما برای پروژه‌های جدید، venv توصیه می‌شود.

آیا باید برای هر پروژه، محیط مجازی پایتون جداگانه بسازم؟

بله — این یک اصل اساسی در توسعه Python است. هر پروژه باید محیط مجازی مستقل خودش را داشته باشد. این کار از تداخل وابستگی‌ها جلوگیری می‌کند و بازتولید پروژه را ممکن می‌کند.

pip install –user با محیط مجازی چه تفاوتی دارد؟

pip install –user پکیج را در پوشه شخصی کاربر نصب می‌کند — نه در محیط مجازی. این راه‌حل جزئی است و مشکل تداخل نسخه‌ها را حل نمی‌کند. همیشه از محیط مجازی استفاده کنید.

اگر محیط مجازی پایتون خراب شد چه کنم؟

محیط مجازی قابل حذف و ساخت مجدد است — مثل یک پوشه معمولی. کافی است پوشه .venv را حذف کنید، یک محیط جدید بسازید و pip install -r requirements.txt را اجرا کنید.

# حذف محیط مجازی خراب

rm -rf .venv          # Mac/Linux

rmdir /s /q .venv     # Windows

 

# ساخت محیط جدید

python -m venv .venv

source .venv/bin/activate

pip install -r requirements.txt

conda یا pip بهتر است؟

برای Data Science و ML: conda بهتر است — می‌تواند پکیج‌های C/C++ مثل NumPy را بهتر مدیریت کند. برای توسعه وب و سایر موارد: pip با venv کافی است. می‌توانید هر دو را ترکیب کنید — conda برای محیط و pip برای پکیج‌هایی که در conda نیستند.

 

 

جمع‌بندی

محیط مجازی پایتون (Virtual Environment) یکی از ضروری‌ترین مفاهیم در توسعه Python است. هیچ پروژه جدی‌ای بدون آن شروع نمی‌شود.

خلاصه چیزی که یاد گرفتیم:

  • چرا: جداسازی وابستگی‌ها، جلوگیری از تداخل نسخه‌ها، بازتولیدپذیری
  • venv: ابزار داخلی Python — برای شروع کافی است
  • pipenv: ترکیب pip و venv — آسان‌تر برای مبتدیان
  • Poetry: برای پروژه‌های بزرگ و Library‌سازی
  • conda: برای Data Science و ML
  • uv: جدیدترین و سریع‌ترین گزینه — ۲۰۲۵

 

  🚀  گام‌های عملی همین الان:

برای هر پروژه Python که دارید، یک محیط مجازی با venv بسازید.

requirements.txt را ایجاد کنید و در Git نگه‌دارید.

پوشه .venv را به .gitignore اضافه کنید.

برای پروژه‌های جدید و بزرگ‌تر، Poetry را بررسی کنید.

 

 

  🔗  مقالات مرتبط در آکادمی تک:

راهنمای کامل نصب Python — نصب Python در ویندوز، مک و لینوکس

کدنویسی Python بدون نصب — Google Colab و اپ‌های موبایل

بهترین IDE برای Python — VS Code، PyCharm، Cursor

 

 

نویسنده: تیم آکادمی تک  |  academy-tech.ir  |  آخرین به‌روزرسانی: ۱۴۰۴

اگر مفید بود با دوستانتان به اشتراک بگذارید 🐍

Share: 

No comments yet! You be the first to comment.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *