آشنایی و استفاده از Virtual environment

Python Virtual Environmenr
محیط مجازی در پایتون

با سلام، امروز میخوام در مورد virtualenv در پایتون (Python) بنویسم.

۱- virtual env چیست؟

یه virtual environment ابزاری جهت نگهداری وابستگی های مورد نیاز توسط پروژه های مختلف د رمکان های مختلف و جدا با ساختن virtualenv برای آنها می باشد. با virtual env مشکل  و وضع دشوار  اینکه پروژه X  نیازمنده ورژن 1.x هست و پروژه Y نیاز به 4.x دارد و با هر دو پروژه در یک زمان داریم کار می کنیم  را حل می کند. هر virtual env میتونه ورژن مختلفی از پایتون و مجموعه کتابخانه های متفاوتی نیز داشته باشد.

خیلی ساده و خودمونی بخوام virtual envرو تعریف کنم، میشه یه محیط مجازی، فرض کنید من دو تا پروژه دارم که یکیشون با پایتون نسخه ۳.۶۵ باید کار کنه و دیگری با پایتون ۳.۷.۱ برای حل این مشکل و اینکه لازم نباشه نسخه های پیش فرض سیستم عاملم رو تغییر بدم، محیط مجازی می سازم، برای هر پروژه یک محیط مجازی جداگانه، برای پروژه اول یه محیط مجازی با پایتون ۳.۶.۵ می سازم و به همین شکل برای پروژه دوم محیط مجازی که داخلش پایتون ۳.۷.۱ رو نصب کرده باشم. علاوه بر محیط های مجازی که ساختم، ورژن پایتون سیستم عامل خودم ۳.۷.۵ مونده و تغییری نکرده. هر دفعه ام داخل هر محیط مجازی بشم، دارم از پکیج های نصب شده داخل اون محیط استفاده می کنم. به همین سادگی.  محیط های مجازی یا viertual env همینیه که مثال زدم 🙂 

برای مثال داریم روی پروژه ای کار می کنیم که نیازمنده به NLTK  ورژن ۳.۰.۴  و در کنارش نیز یه پروژه داریم که با NLTK ورژن 3.2.4 کار می کند.2- نصب و راه اندازی virtualenv:نصب virtualenv توسط pip:

pip install virtualenv

تست نصب :

virtualenv --version

۲- استفاده از virtualenv در Python2:

ساخت یک virtual environment برای یک پروژه: (رفتن به فولدر مورد نظر برای پروژه و ساخت virtualenv با نام nltk_main)

cd NLTK_MASTER_PROJECT
virtualenv nltk_main

virtualenv nltk_main یک دایرکتوری در دایرکتوری فعلی می سازه که فایل های قابل اجرای پایتون و یه کپی از کتابخانه pip که میتوانید برای نصب دیگر پکیج ها استفاده کنید را دارا می باشد. نام virtual environment (در این مثال nltk_main می باشد) میتواند هر چیزی باشد. برای استفاده از مفسر پایتون مورد نظر خودتون میتوانید از دستور زیر استفاده کنید(مصلا پایتون 2.7 ):

virtualenv -p /usr/bin/python2.7 nltk_main

برای شروع به استفاده از virtualenv باید آن را فعال کرد:

source nltk_main/bin/activate

با اجرای دستور بالا نام virtual environment فعلی سمت چپ قرار می گیرد که به شما نشان میده که active هست. از حالا به بعد هر پکیجی که با pip نصب کنید درون nltk_main قرار می گیرد که از Python نصب شده به صورت global بر روی سیستم جدا است. 

حال شروع به نصب پکیج ها بکنید:

اگر کارتون روی virtualenv ساخته شده تمام شد و خواستید deactivate کنید کافیه دستور زیر را بنویسید:

deactivate

برای پاک کردن virtualenv کافیه فولدرش را پاک کنید برای مثال این مطلب :

rm -rf nltk_main

۳ – استفاده از virtualenv و python3

خب تغییراتی برای استفاده از virtualenvدر پایتون۳ رخ داده است.

ماژولی که برای نصب استفاده میشه venv نام دارد.

جهت نصب از دستور زیر استفاده کنید :

sudo apt-get install python3-venv

برای راه اندازی با استفاده از پایتون ۳ باید از دستور زیر استفاده کرد (برای مثال با اسم Bagh-env)

python3 -m venv bagh-env

برای اجرا کردن نیز از دستور زیر استفاده کنید:

source bagh-env/bin/activate

برای نصب پکیج با استفاده از pip نیز کافیه به فرمت زیر دستورات را وارد کنید:

توجه کنید که ابتدا باید با استفاده از دستور فوق، virtualenv اجرا کرده باشید.

pip install django

با دستور فوق، آخرین نسخه از django نصب می شود. اگر قصد نصب نسخه مشخصی از یه پکیج را داشته باشید، از دستور زیر استفاده کنید (برای مثال نسخه ۲.۶.۰ از پکیج request):

$ pip install requests==2.6.0

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

pip list

برای حذف یک پکیج نیز از دستور pip uninstall استفاده کنید و برای دیدن مشخصات یک پکیج نیز از دستور pip show استفاده کنید.

دستور pip freeze نیز لیستی مشابه لیستی از پکیج های نصب شده تان می سازد که میتوان از آن لیست در pip installنیز استفاده کرد. برای مثال با دستور زیر ما لیستی از پکیج های نصب شده را در فایلی با نام requierements.txt می ریزیم:

pip freeze > requirements.txt

برای نصب از روی این لیست (تمامی پکیج هایی که داخل این لیست هستند رو پشت سر هم نصب خواهد کرد):

pip install -r requirements.txt