پرستو هدایتی
پرستو هدایتی
خواندن ۳ دقیقه·۳ سال پیش

پایتون و virtual environment ها

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

هر برنامه ای که مینویسیم از کتابخونه های مختلف استفاده میکنیم که با توجه به سیستم ما و البته نیازمون ممکنه ورژن های متفاوتی از هر ابزار و کتابخونه رو انتخاب کنیم.

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

جواب استفاده از virtual environment هاست. حالا اصلا چی هست؟

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

فرض کنید یک برنامه قراره با یکی از نسخه های جنگو و برنامه ی دیگه ای قراره با نسخه دیگه ای از جنگو اجرا بشه. تکلیف سرور چیه؟ باید کدوم نسخه جنگو نصب بشه؟

خب برنامه اول رو در نظر میگیریم که نیاز به جنگو نسخه ۲ داره. باید براش یک ماشین مجازی بسازیم.

تو این ماشین مجازی دقیقا چه چیز هایی قرار میگیره؟ بریم سراغ پروژمون تا جوابو پیدا کنیم!

یک کد پایتون داریم که از جنگو ۲ استفاده میکنه. یک دایرکتوری یا فولدر درست میکنیم و فایل برناممونو داخلش قرار میدیم.

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

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

virtualenv < virtual_name >

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

source < virtual_name >/bin/activate

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

sudo apt install python-pip

با دستور pip کتابخونه هایی که میخوایم رو نصب میکنیم:

pip install < library_name > pip install django == 2

که اینجا دقیقا نسخه ۲ جنگو رو میخواستیم و نصب کردیم.

بعد از اینکه کار نصب کتابخونه ها تموم شد میتونیم با دستور pip freeze ببینیم چه کتابخونه هایی و با چه ورژن هایی در ماشین مجازیمون داریم. و همینطور میتونیم خروجی رو داخل یک تکست فایل قرار بدیم تا وقتی ماشین مجازی رو در اختیار کسی قرار دادیم به راحتی بتونه کتابخونه های مورد نیاز رو ببینه.

pip freeze > libraries.txt

بعد از پایان کارهامون با دستور deactivate میتونیم ماشین مجازیمونو ببندیم و ازش خارج بشیم.

deactivate

در نهایت میتونیم از این دایرکتوری یک فایل فشرده ( زیپ فایل یا ... فرقی نداره ) درست کنیم و در اختیار مدیر سرور قرار بدیم که میتونه پکیج مارو اجرا کنه بدون اینکه ورژن کتابخونه های رو سیستمش رو تغییر بده.

حتی میتونیم چند برنامه که برای خودمون داریم روی چند ماشین مجازی قرار بدیم که بتونیم هرکدوم رو تک تک اجرا کنیم.

اگر بخواهیم یک برنامه رو داخل ماشین مجازی اجرا کنیم اول مثل بالا وارد ماشینمون میشیم و بعد کوئری زیر رو وارد میکنیم. خود ماشین کتابخونه های نصب شده روی ماشین رو چک میکنه و برنامه رو اجرا میکنه:

python myproject.py

در کل virtual environment ها مبحث بسیار ساده و بسیار بسیار ساده ای هستش که حتما بلد بودنش به کارتون میاد.

خوش باشید.

برنامه نویسیپایتونماشین مجازیvirtual environmentvirtualenv
مدتیه که برنامه نویسی میکنم و نظرم اینه هر روز باید بیشتر از دیروز یاد گرفت تا بشه پیشرفت کرد.
شاید از این پست‌ها خوشتان بیاید