برای اینکه پکیجهایی که با pip نصب میکنیم بشکلی از سیستم عامل ایزوله بمونه و Global توی سیستم عامل نصب نشه تا بعدا کلی دردسر درست نشه، توی پایتون از Virtual Enviroment میشه استفاده کرد. یعنی هر پروژه میتونه یک محیط برای نصب پکیجهاش داشته باشه تا از نظر نسخه با هم تداخل نداشته باشن.
فرض کنین دو تا پروژه A و B داریم که هر دو از جانگو استفاده میکنن. A رو چند سال پیش نوشتیم و B رو اخیرا شروع کردیم. A با جانگو نسخه ۱.۵ نوشته شده و B با نسخه ۱.۱۱ ساخته شده. فرزان از Virtual Enviroment استفاده میکنه تا این دو پروژه با هم تداخل نکنن و یکجا بتونن کنار هم زندگی کنن.
اگه این موضوع رو گوگل کنیم از بس تعدادشون زیاده که کلا سردر گم میشیم. اینا یه سریشونن:virtualenvpyenvpipenvvirtualenvwrapperpyenvvirtualenvwrapper
آدم کلا نا امید میشه ولی یه توضیحی اینجا هست که شاید بدرد بخوره و من مستقیم میرم سراغ virtualenv
که برای پایتون ۳.۵ جوابه و زیاد نمیرم سراغ جزئیاتش. اگه شما بیشتر میدونین بهم بگین.
در کل برای نصب و استفاده به پوشه پروژه میریم و دستورات پایین رو اجرا میکنیم. البته pip باید قبلش نصب باشه اوصولا.
$ pip install virtualenv
قدم بعدی ایجاد محیط مجازیست.
$ virtualenv mypython
این دستور یک همچین ساختاری رو توی پوشهتون ایجاد میکنه که پکیجهایی که نصب میکنیم اینجا میرن و فعلا از اینجا فایل activate مهمه.
├── 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
میتونیم این محیط رو با دستور زیر فعال کنیم و پکیجهامون رو نصب کنیم. اون env تو سطر دوم نشون میده که فعال شده. اگر خواستیم میتونیم چند تا از اینا داشته باشم و آزمایش کنیم و بهترین حالت رو برای پروژههامون پیدا کنیم.
$ source bin/activate
(env) $
برای غیرفعال کردن میتونیم به ترمینال بگیم deactivate و برای نصب روی ویندوز اینجا رو ببینین، من بلد نیستم. اگه کسی پرسید برای این پروژه چه پکیجهایی باید نصب کنم کافیه دستور زیر رو اجرا کنیم تا یک خروزجی از همه پکیجهای اون محیط مجازی بگیریم.
$ pip freeze > requirments.txt
خیلی متداوله که این فایل توی روت پروژه باشه تا اگه کسی خواست پروژه رو استفاده کنه با دستور زیر تمام پکیجهای نیاز برای اجرا (dependency) رو نصب کنه و حالش رو ببره.
$ pip install -r requirments.txt