محیط های مجازی virtualenv در پایتون

May 2022


محیط های مجازی یک تکنیک رایج و موثر در توسعه پایتون هستند. به دست آوردن درک بهتری از نحوه کار آنها، چرایی نیاز به آنها و کارهایی که می توانید با آنها انجام دهید به شما کمک می کند تا بر گردش کار برنامه نویسی پایتون خود تسلط پیدا کنید.

 

 

# محیط مجازی در پایتون چیست؟

virtual environment چیست؟ محیط مجازی پایتون یک ساختار دایرکتوری است که هر آنچه را که برای اجرای یک محیط سبک وزن و در عین حال ایزوله پایتون نیاز دارید در اختیار شما قرار می دهد.

 

در اصل ، هدف اصلی محیط های مجازی پایتون ایجاد یک محیط جداگانه برای پروژه های پایتون است. این بدان معناست که هر پروژه می تواند وابستگی های خاص خود را داشته باشد ، صرف نظر از اینکه هر پروژه دیگری چه وابستگی هایی دارد.

 

زمانی که در حال کار روی پروژه واقعی هستید به نصب پکیج های خارجی نیاز پیدا میکنید. محیط مجازی به شما اجازه میدهد که بتوانید یک کپی از پایتون اصلی سیستم گرفته و در یک محیط ایزوله روی آن کار کنید. اینکار باعث میشود که پکیج های پروژه های مختلف با یکدیگر تداخل نداشته باشند. virtual environment یکی از مهمترین ابزارهایی است که اکثر توسعه دهندگان پایتون از آن استفاده می کنند.

 

سناریویی را تصور کنید که در آن روی دو پروژه پایتون مبتنی بر وب کار می‌کنید و یکی از آنها از جنگو 2 و دیگری از جنگو 3 استفاده می‌کند. در چنین شرایطی محیط مجازی می تواند برای حفظ وابستگی هر دو پروژه واقعا مفید باشد.

 

نکته جالب این است که هیچ محدودیتی در تعداد محیط هایی که می توانید داشته باشید وجود ندارد زیرا آنها فقط دایرکتوری هایی هستند که حاوی چند اسکریپت هستند. به علاوه، آنها به راحتی با استفاده از ابزار خط فرمان virtualenv یا pyenv ایجاد می شوند.

 

یک روش دیگر برای ساخت محیط‌های مجازی استفاده از anaconda است. برای یادگیرین آن میتوانید ویدیو آموزش آناکوندا در پایتون را مشاهده کنید.

 

 

# نصب محیط مجازی در پایتون

پکیج virtualenv ابزاری برای ایجاد محیط های ایزوله در پایتون است. از نسخه پایتون 3.3، این پکیج در کتابخانه استاندارد پایتون با نام venv ادغام شده است. پس اگر از نسخه پایتون 3.3 به بالا استفاده میکنید، نیازی به نصب چیزی ندارید. اما اگر نسخه پایتون شما پایین تر از 3.3 است با دستورات زیر میتوانید این پکیج را نصب کنید:

pip install virtualenv

 

بعد از نصب پکیج virtualenv میتوانید با دستور زیر صفحه help این ابزار را ببینید:

$ python3 -m venv -h

usage: venv [-h] [--system-site-packages] [--symlinks | --copies] [--clear]
            [--upgrade] [--without-pip] [--prompt PROMPT] [--upgrade-deps]
            ENV_DIR [ENV_DIR ...]

Creates virtual Python environments in one or more target directories.

positional arguments:
  ENV_DIR               A directory to create the environment in.

optional arguments:
  -h, --help            show this help message and exit
  --system-site-packages
                        Give the virtual environment access to the system
                        site-packages dir.
  --symlinks            Try to use symlinks rather than copies, when symlinks
                        are not the default for the platform.
  --copies              Try to use copies rather than symlinks, even when
                        symlinks are the default for the platform.
  --clear               Delete the contents of the environment directory if it
                        already exists, before environment creation.
  --upgrade             Upgrade the environment directory to use this version
                        of Python, assuming Python has been upgraded in-place.
  --without-pip         Skips installing or upgrading pip in the virtual
                        environment (pip is bootstrapped by default)
  --prompt PROMPT       Provides an alternative prompt prefix for this
                        environment.
  --upgrade-deps        Upgrade core dependencies: pip setuptools to the
                        latest version in PyPI

Once an environment has been created, you may wish to activate it, e.g. by
sourcing an activate script in its bin directory.

 

 

# ساخت محیط‌ مجازی در پایتون

venv (برای پایتون 3) و virtualenv (برای پایتون 2) به شما این امکان را می دهند که نصب بسته های جداگانه را برای پروژه های مختلف مدیریت کنید. آنها اساساً به شما امکان می دهند یک محیط پایتون ایزوله "مجازی" ایجاد کنید و پکیج ها را در آن محیط مجازی نصب کنید. هنگامی که پروژه ها را تغییر می دهید، می توانید به سادگی یک محیط مجازی جدید ایجاد کنید و نگران خراب شدن پکیج های نصب شده در محیط های دیگر نباشید. همیشه توصیه می شود در هنگام توسعه برنامه های پایتون از یک محیط مجازی استفاده کنید.

 

برای ایجاد یک محیط مجازی در پایتون، به دایرکتوری پروژه خود بروید و کتابخانه venv را از مفسر پایتون صدا بزنید:

py -m venv my_env  # windows
python3 -m venv my_env  # linux

 

در قطعه کد بالا، ابتدا مفسر پایتون را صدا زدیم، سپس با آپشن m- مشخص کردیم که قرار است یک ماژول از کتابخانه استاندارد پایتون اجرا کنیم به نام venv. در آخر مسیری که قرار است محیط مجازی در آن ساخته شود را مشخص کردیم که ما فقط my_env قرار دادیم. در این صورت محیط مجازی در دایرکتوری فعلی ایجاد خواهد شد.

 

بعد از اجرا کد بالا، یک دایرکتوری به نام my_env ایجاد خواهد شد که شامل ساختار دایرکتوری مشابه این است:

├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── easy_install
│   ├── easy_install-3.5
│   ├── pip
│   ├── pip3
│   ├── pip3.5
│   ├── python -> python3.5
│   ├── python3 -> python3.5
│   └── python3.5 -> /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
├── include
├── lib
│   └── python3.5
│       └── site-packages
└── pyvenv.cfg

 

در اینجا هر پوشه حاوی موارد زیر است:

 

 

# فعال کردن محیط‌ مجازی در پایتون

بعد از ایجاد کردن محیط مجازی باید آن را فعال کنید. قبل از شروع نصب یا استفاده از پکیج ها در محیط مجازی خود، باید آن را فعال کنید. فعال کردن یک محیط مجازی، فایل های اجرایی پایتون و pip مخصوص محیط مجازی را در PATH پوسته شما قرار می دهد.

 

با دستورات زیر میتوانید محیط محازی را فعال کنید:

.\my_env\Scripts\activate   # windows
source my_env/bin/activate   # linux

 

بعد از فعال شدن محیط مجازی، prompt شما به شکل زیر خواهد بود:

(my_env)$

 

می‌توانید با بررسی مکان مفسر پایتون خود تأیید کنید که در محیط مجازی هستید:

where python   # windows
which python   # linux

 

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

...\my_env\Scripts\python.exe   # windows
.../my_env/bin/python   # linux

 

تا زمانی که محیط مجازی شما فعال باشد، pip پکیج ها را در آن محیط خاص نصب می‌کند و شما می‌توانید پکیج ها را در برنامه پایتون خود وارد کرده و از آنها استفاده کنید.

 

 

# غیرفعال کردن محیط‌ مجازی در پایتون

اگر می خواهید پروژه را تغییر دهید یا محیط مجازی خود را ترک کنید، به سادگی اجرا کنید:

deactivate

 

اگر می خواهید دوباره وارد محیط مجازی شوید، کافی است همان دستورالعمل های بالا را در مورد فعال سازی یک محیط مجازی دنبال کنید. نیازی به ایجاد مجدد محیط مجازی نیست.

 

 

# نصب پکیج در محیط‌ مجازی پایتون

بعد از اینکه محیط مجازی خود را فعال کردید می توانید پکیج ها را نصب کنید. تمام پکیج هایی که نصب میکند در محیط مجازی نصب خواهند شد. بیایید کتابخانه Requests را از PyPI نصب کنیم:

(my_env)$ pip install requests

 

pip باید پکیج requests و تمام وابستگی هایش را دانلود و محیط مجازی نصب کند.


5:47:36


0

Intro

10:38

رایگان

1

Variable

12:30

رایگان

2

String

19:22

رایگان

3

List

8:46

رایگان

4

While

9:6

رایگان

5

If

8:37

رایگان

6

For

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

Function

12:32

رایگان

10

List methods

12:11

رایگان

11

Tuple

8:29

رایگان

12

Set

7:47

رایگان

13

Dictionary

9:19

رایگان

14

Module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

File

17:14

رایگان

18

Scope

6:25

رایگان

19

OOP

12:15

رایگان

20

Method

20:19

رایگان

21

class/instance variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

Inheritance

17:6

رایگان

24

Special methods

9:50

رایگان

25

Access points

11:12

رایگان

26

property

6:54

رایگان

27

Exceptions

21:17

رایگان

28

Standard library

12:51

رایگان

29

Docstring

10:49

رایگان

30

Virtualenv

11:2

رایگان


دوره‌های پیشنهادی

دوره اول آموزش جنگو(django)

دوره اول آموزش جنگو(django)

دوره آموزش GraphQL در پایتون

دوره آموزش GraphQL در پایتون

دوره آموزش Celery

دوره آموزش Celery

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

س

May 2022

سلام
یه سوال دارم با کار در محیط مجازی من اگر پروژه ام رو روی سیستم دیگه ببرم دیگه نیاز به نصب کتابخونه های استفاده شده در پروژه نیست؟یک بار در محیط مجازی در دایرکتوری مربوطه نصب شده و در هر سیستمی از اون محیط مجازی میخونه مستقل از سیستمی که اجرا میشه؟

ارسال نظر


امیرحسین بیگدلو

May 2022

سلام
بله. اگر محیط مجازی رو همراه پروژه جابه جا کنید، دیگه نیازی به نصب مجدد پکیج ها نیست. فقط دقت کنید که ساختار محیط های مجازی در سیستم عامل های مختلف فرق میکنه.
مثلا نمیتونید یک محیط مجازی رو از لینوکس ببرید داخل ویندوز.
البته در دنیای واقعی هیچ وقت محیط مجازی رو جا به جا نمیکنیم. بجاش فایل requirements میسازیم. این مقاله رو بخونید:
https://www.mongard.ir/articles/212/make-requirements-txt-python/

mkak

May 2022

ممنون از شما. بسیار عالی تدریس کردین.

ارسال نظر


sanazz_mi

May 2022

خیلی عالی بود مخصوصا بخش شی گرایی.
خدا قوت

ارسال نظر


محمد

May 2022

درود بر شما امیر جان
خیلی خیلی عالی بود. آفرین!
لطفا ادامه بدید.

ارسال نظر


elahe

April 2022

واقعا خیلی عالی توضیح میدین، ممنون ازتون

ارسال نظر


پوریا

March 2022

سلام من venv ساختم و فعالش کردم ولی چطوری ران کنم برنامه دیگه ران نمیشه

ارسال نظر


محمد سجادی

March 2022

سلام
بسیار ممنون بابت این آموزش محیط مجازی
فقد سوالی که برام باقی مونده، اگر بخوایم بعد از اینکه محیط مجازی ساخته شد بریم کد بزنیم، باید چطوری یه پروژه جدید مرتبط با همین فایل مجازی تعریف کرد توی پای چارم؟! باید خود فایل محیط مجازی رو به عنوان پروژه باید باز کنم و توش فایل پایتونی ایجاد کنم و بعدش شروع به کد زدن کنم یا جور دیگه ای؟!

ارسال نظر


امیرحسین بیگدلو

March 2022

سلام
توی دوره اول آموزش جنگو توضیح دادم این مورد رو.
برید داخل settings پایچارم و بعد بخش project و روی گزینه project interpreter رو انتخاب کنید. اونجا میتونید محیط مجازیتون رو توی پایچارم فعال کنید.

هادي صبوري منش

February 2022

سلام استاد امیر عزیز. پر واضح است كه شما كاملا مسلط و كاربلد هستيد .
ممنونم از شما بابت اموزش بسيار خوبتون . عاليه
من يه دوره پايتون قبلا گذرونده بودم . با اين دوره شما خيلي از سوالات و مشكلاتم حل شد به خصوص در مبجث شي گرايي .

ارسال نظر


farbod

February 2022

سلام استاد امیر عزیز . بسیار دوره ی مفیدی بود برای منی که یه سری قسمت های پایتون اشکال داشتم و همینطور سریع اومدم یه سری از ویدیو هاتونو دیدم به نظرم اموزش پرباری هست و واقعا لحن بیانتونم خیلی عالیه ممنون

ارسال نظر


زهره

January 2022

سلام ممنون برای کار عالی شما.
به نظرم یک wrap upبرای آخرش می ساختید. اینکه کی در پرانتز آبجکت یا ... داده شود یا پس از متد با دات، مشخص نیست.
بار هم از شما ممنونم.

ارسال نظر


امین

January 2022

عالیه همین سیستم ادامه بدین

ارسال نظر


مهدی

January 2022

سلام. وقت بخیر. عالی بود. فقط نکته قابل توجه اینکه از مثال های کامل تری استفاده کنید. یعنی اینکه مثال هاتون خیلی ساده است.

سپاس فراوان

ارسال نظر


امیرحسین بیگدلو

January 2022

سلام
دوره مقدماتیه!!!

ُسعید

December 2021

سلام و عرض ادب
بسیار عالی بود من تا اخرین دوره از اموزشهای شما استفاده کردم بخصوص از لحن بسیار ساده و خودمونی شما بسیار لذت بردم.
پیشنهادی داشتم که در صورت امکان در مورد دکوریتور ها و *arg و **kwargs هم اموزش بدید ممنونم

ارسال نظر


امیرحسین بیگدلو

December 2021

سلام
برای اینها قبلا ویدیو ضبط کردم و در بخش ویدیو‌های تک قسمتی قرار دادم.
ویدیوهای پایین رو ببین:
https://www.mongard.ir/one_part/20/args-and-kwargs-python/
https://www.mongard.ir/one_part/10/how-python-decorators-works/

احمد بهشتی

December 2021

سلام و عرض ادب

بسیار سپاسگزارم از دوره خوب و بیان شیواتون

بنده تازه شروع به یادگیری پایتون کردم و رشته تحصیلیم نرم افزار هست می خواستم بدونم بعد از این دوره کدام دوره را دنبال کنم تا مسلط تر بشم و بعدا در مورد این که کدوم شاخه رو انتخاب کنم تصمیم بگیرم

ارسال نظر


امیرحسین بیگدلو

December 2021

سلام
این مقاله رو مطالعه کنید:
https://www.mongard.ir/articles/51/python-advanced-courses/

شمس الله میرعرب

November 2021

سلام استاد بسیار سپاسگزارم از شما .

ارسال نظر


وحید

November 2021

سلام
میشه یه اپدیت برای این دوره بدید و ویژگی های پایتون 3.10 رو آموزش بدید ؟

ارسال نظر


امیرحسین بیگدلو

November 2021

سلام
این دوره رو تازه آپدیت کردم.
ویژگی‌های دیگه رو میزارم تو بخش ویدیوهای تک قسمتی

گلرخ

November 2021

من از روی آموزشهای شما اقدام به یادگیری پایتون مکوده ام اما جلسه اخر که در مورد محیط مجازی بود متوجه نشدم در کدام محیط اقدام به ساخت این محیط ها کردید از طریقcmd یا محیط پایتون این مهم امکان پذیر است؟
سپاس .راهنمایی بفرمایید

ارسال نظر


امیرحسین بیگدلو

November 2021

سلام
این دستوراتی که گفتم رو باید در ترمینال یا cmd بزنید.

علی

October 2021

خیلی عالی بود،خسته نباشید.

ارسال نظر


همایون

July 2021

امیرحسین عزیز
واقعا خسته نباشی بیان شیوایی داری و ترسم از خود داکیونت پایتون هم ریخت... دمت گرم

چطوری با پایتون میشه لاگین با اکانت گوگل درست کرد جوری که عکس، ایمیل و نام کاربر رو بگیرم؟ داخل خود پایتون منظورم واسه سرگرمی میخام آموزش های زیادی بود که توی وب استفاده کرده بودن مثل جنگو و...
ممنون میشم ی سرنخی بهم بدی

ارسال نظر


امیرحسین بیگدلو

July 2021

سلام
با پایتون خیلی سخت میشه اینکار رو کرد باید کلی کد نوشت. من خودم تا حالا همچین کاری نکردم. معمولا از پکیج‌ها استفاده میکنیم.

محمد

May 2021

زنده باد

ارسال نظر


حسین

October 2020

ممنونم . . جایی نتونستم آموزش خوبی درباره محیط مجازی پایتون پیدا کنم . . شما خیلی خوب توضیح دادین فهمیدم کامل (:

ارسال نظر


امیرحسین بیگدلو

October 2020

چاکریم