
محیط های مجازی 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
در اینجا هر پوشه حاوی موارد زیر است:
- bin: فایل هایی که با محیط مجازی تعامل دارند
- include: هدرهای C که بسته های پایتون را کامپایل می کنند
- lib: یک کپی از نسخه پایتون به همراه یک پوشه site-packages که هر وابستگی در آن نصب شده است
# فعال کردن محیط مجازی در پایتون
بعد از ایجاد کردن محیط مجازی باید آن را فعال کنید. قبل از شروع نصب یا استفاده از پکیج ها در محیط مجازی خود، باید آن را فعال کنید. فعال کردن یک محیط مجازی، فایل های اجرایی پایتون و 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
س
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چاکریم