virtualenv چرا و چگونه ؟

Posted by

برای ساخت یک محیط ایزوله و جدا برای پروژه ی در دست ساخت در زبان پایتون از virtualenv استفاده میکنیم. دلیل این امر عدم تاثیر پذیری پایتون و ماژولها و کتابخانه های نصب شده از تغییرات در سیستم و انتخاب نسخه مورد نظر ما برای پایتون و پکیج های آن است. بعنوان مثال مسیر نصب در pip یک مسیر مشخص است که هر کتابخانه و ماژول جدید در این مسیر نصب میشود و به مرور زمان با نصب کتابخانه‌های جدیدتر ممکن است بعضی پکیج ها دچار تغییراتی شوند که در کار توسعه پروژه فعلی ما ایجاد اختلال کنند. به همین منظور استفاده از محیط ایزوله برای جداسازی پایتون و ماژولهای مورد نیاز از مسیر سیستم کاملا معقول و لازم است . با استفاده از پکیج virtualenv میتوان یک محیط ایزوله برای این منظور ساخت :

sudo apt-get update
sudo apt-get install build-essential libssl-dev libffi-dev python-dev
sudo apt install python3-pip
sudo pip3 instal virtualenv

بعد از نصب virtualenv در مسیر پروژه یک محیط ایزوله بصورت زیر میسازیم:

$cd new-project
virtualenv -p python3 env

در صورتیکه برروی سیستم خود نسخه های متفاوتی از پایتون نصب شده باشد، با استفاده از سوئیچ زیر میتوان نسخه متفاوتی از پایتون سیستم مادر را در virtualenv نصب کرد:

virtualenv -p python3 env --python="pythonx.y"

که pythonx.y پایتون نسخه x.y میباشد، مثلا پایتون نسخه ۳.۶ یا ۲.۷ یا …

در مسیر new-project در فولدر env یک پایتون جدید برپا میکند.برای فعال سازی پایتون جدید باید به مسیر زیر رفته و آن را فعال کنیم:

$cd env/bin
$source activate

بعد از این عمل اعلان ترمینال تغییر کرده و نام محیط ایزوله قبل از مسیر جاری قرار میگیرد:

ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$ source activate
(env) ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$

برای اطمینان از نصب صحیح میتوانیم نسخه پایتون مورد استفاده را بدست بیاوریم :

$python --version
Python 3.7.5

$which python
/home/ali/Documents/ML/virtualEnv/env/bin/python3

بعد از نوشتن کد مورد نظر و اتمام کار با استفاده از دستور deactivate از محیط virtual environment خارج میشویم .اعلان (env) نیز پاک خواهد شد:

ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$ source activate
(env) ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$ which python3
/home/ali/Documents/ML/virtualEnv/env/bin/python3
(env) ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$ deactivate 
ali@ali-pc:~/Documents/ML/virtualEnv/env/bin$ which python3
/usr/bin/python3

Leave a Reply

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