مقایسه ابزارهای مختلف محیط مجازی پایتون – راهنمای جامع
هر زمان که میخواهید یک پروژه پایتون جدید را آغاز کنید، باید تصمیم بگیرید که قصد دارید از کدام نسخه پایتون استفاده کنید. همچنین باید از میان برخی کتابخانهها یا بستهها دست به انتخاب بزنید. البته یک روش دیگر هم این است که این بستهها را در سطح سیستمی نصب نکنید. چون این امکان هست که همزمان بر روی پروژههای مختلفی کار کنید که به نسخههای متفاوتی از پایتون نیاز دارند. د رعین حال احتمال دارد به برخی بستههای خاص نیاز داشته باشید که صرفاً با یک نسخه از پایتون کار میکنند و روی نسخههای دیگر از کار میافتند. در چنین مواردی باید محیطهای مختلفی برای پایتون راهاندازی کنیم. این محیطها به نام «محیط مجازی پایتون» (Python Virtual Environments) نامیده میشوند.
هر محیط مجازی، فضای مجازی خاص خود را دارد. هیچ کدام از بستههایی که درون آن فضا نصب میشوند، نمیتوانند با بستههایی که خارج از محیط هستند، تداخل داشته باشند. معکوس این حالت نیز برقرار است.
در این نوشته قصد داریم با برخی از این محیطهای مجازی آشنا شویم. در ادامه ابزارهای محیط مجازی جدید پایتون را معرفی کرده و تفاوتهای آنها را با همدیگر مورد بررسی قرار میدهیم.
1. Virtualenv
بسته به این که پایتون را روی چه سیستمی و با چه روشی نصب کرده باشید، مکان آن روی سیستم متفاوت خواهد بود. با این حال اگر پایتون 3 را با استفاده از Homebrew نصب کرده باشید، موقعیت آن روی سیستم در مسیر زیر خواهد بود:
/usr/local/Cellar/python/3.7.2_1/bin
در این حالت، برای نصب virtualenv با استفاده از pip3 میتوانید از دستور زیر استفاده کنید:
pip3 install virtualenv
ایجاد محیط مجازی
اینک همه بستهها نصب شدهاند و میتوانیم شروع به راهاندازی محیط مجازی بکنیم. در ابتدا باید مکانی که میخواهیم محیط خود را بسازیم معین کنیم و نامی نیز برای آن تعیین کنیم.
ما محیط مجازی خود را در همان دایرکتوری که نصب شده، ایجاد میکنیم و نام آن را نیز virtEnv1 میگذاریم.
virtualenv -p python3 ~/virtEnv1
آرگومان آخر در دستور فوق، مسیر دقیق محیط ما را به همراه نام محیطی که میخواهیم ایجاد کنیم تعیین میکند. محیط ما اینک تنظیم شده و میتوانیم شروع به کار با آن بکنیم.
مزیتهای Virtualenv: ارتقای آن با استفاده از pip به آسانی میسر است و میتواند به راحتی با نسخههای متعدد پایتون کار کند. همچنین از Python 2.7 به بعد را پشتیبانی میکند.
معایب Virtualenv: در این محیط مجازی، فایل باینری مفسر در عمل به یک مکان جدید کپی شده است و باید از آنجا خوانده شود. ضمناً اگر بخواهید از آن استفاده کنید، باید آن را به صورت مجزا نصب کنید و به همراه پایتون ارائه نمیشود.
2. PEW
«پوشش محیط پایتون» (Python Environment Wrapper) یا به اختصار PEW به عنوان یک لایه پوششی عمل میکند. هنگامی که میخواهید از این محیط استفاده کنید، کافی است صرفاً دستور pew را به خاطر بسپارید، زیرا تقریباً هر کاری که لازم باشد انجام دهیم، با استفاده از این دستور ممکن خواهد بود. مستندات این ابزار را میتوانید در این صفحه (+) مطالعه کنید.
مزایای PEW: به همراه محیطهای مجازی دیگر نیز کار میکند. میتوان با یک دستور منفرد، یک محیط جدید ایجاد کرد، فهرستی از بستهها را نصب نمود و محیط را نیز فعال کرد.
معایب PEW: مشکل اصلی این ابزار آن است که پشتیبانی بسیار محدودی دارد. آخرین کامیت آن مربوط به نزدیک به یک سال پیش است.
3. venv
از ابزار venv نیز میتوان برای راهاندازی و دسترسی به محیط مجازی در پایتون استفاده کرد. این ابزار به همراه متد توصیه شده برای ایجاد محیط مجازی از نسخه 3.5 پایتون به بعد ارائه شده است. مستندات آن را میتوانید در این صفحه (+) ملاحظه کنید.
مزایای venv: یک فایل پیکربندی ایجاد میکند که به صورت مستقیم از سوی فایل باینری پایتون مورد استفاده قرار میگیرد و دیگر نیاز نیست فایل باینری به مکان جدیدی کپی شود. به علاوه از سوی توسعهدهندگان پایتون مورد پشتیبانی قرار گرفته است.
معایب venv: این ابزار برای پایتون قبل از نسخههای 3.3 ارائه شده است.
4. Pipenv
این ابزار با محیطهای مجازی و پایتون کار میکند و این دو را به یک سطح بالاتر ارتقا میدهد، زیرا بستهها و پشتیبانی مدیریت محیط را به صورت یک ابزار واحد ترکیب میکند. مستندات آن در این صفحه (+) ارائه شده است.
مزایای Pipenv: ما میتوانیم محیطی که روی آن کار میکنیم را تعیین کنیم. ضمناً به ما امکان ایجاد بخشهای مختلف برای محیط مجازی، از قبیل محیط production یا محیط تست-توسعه را میدهد.
معایب Pipenv: این ابزار باید به صوت مجزا و توسط pip دانلود شود. این ابزار کارکردهای زیادی را در بر میگیرد؛ اما تنها در صورتی باید از این امکانات اضافی استفاده کنیم که واقعاً حس کنیم که به آنها نیاز داریم.
به طور کلی pipenv یکی از بهترین ابزارها برای محیط مجازی محسوب میشود و به دلیل کارکردهای اضافی خود به طور فزایندهای در حال کسب محبوبیت در میان توسعهدهندگان است. از این رو در ادامه به معرفی مراحل مقدماتی مورد نیاز برای راهاندازی pipenv میپردازیم.
راهاندازی Pipenv
برای نصب pipenv با استفاده از brew باید از دستور زیر استفاده کنید:
brew install pipenv
ایجاد محیط
زمانی که pipenv نصب شد، میتوانیم شروع به کار با محیط خود بکنیم. به پوشهای که میخواهید پروژه خود را شروع کنید بروید. ما پروژه خود را دون پوشه pipenvProject ایجاد میکنیم. کافی است به این پوشه بروید و هر بستهای که دوست دارید را نصب کنید. ابتدا requests را نصب میکنیم. بدین ترتیب محیط به صورت خودکار راهاندازی میشود و فایلهای Pipfile و Pipfile.lock را ایجاد میکند.
cd pipenvProject pipenv install requests
این دو فایل در دایرکتوری ایجاد شدهاند. Pipfile شامل فهرستی از بستهها، نسخههای پایتون و اطلاعات دیگر است. یک فایل lock نیز به نام Pipfile.lock ایجاد میشود.
برای فعالسازی این محیط میتوانیم به سادگی از دستور pipenv shell استفاده کنیم. اینک ما در داخل محیط مجازی هستیم. اکنون میتوانیم با دستور python وارد پایتون شده و با استفاده از import requests بررسی کنیم که آیا بستهای داریم یا نه. اگر خطایی دریافت نشد، بدین معنی است که بسته نصب شده است.
با استفاده از دستور exit میتوان از بسته خارج شد. وقتی که از داخل این محیط خارج شویم، دیگر نمیتوانیم به بسته requests دسترسی داشته باشیم.
اینک میتوانیم دستورها را مستقیماً درون محیط و بدون فراخوانی صریح shell اجرا کنیم. به این منظور باید از دستور run استفاده کنیم. بنابراین اگر مجبور باشید، پایتون را اجرا کنید، میتوانید از دستور زیر استفاده کنید:
pipenv run python
تطبیق با کاربران غیر Pipenv
هر زمان که یک مجموعه از بستهها را در پایتون نصب کنیم، به صورت معمول این فهرست از فایلها را در فایل requirements.txt، مورد اشاره قرار میدهیم. سپس باید دستور زیر را اجرا کنیم و همه بستهها را در یک مرحله نصب کنیم.
pip install -r requirements.txt
بنابراین زمانی که شروع به کار با pipenv بکنید، یک روش برای ایجاد متن برای این فایل خواهیم داشت. کافی است از دستور زیر استفاده کنیم:
pipenv lock –r
این فایل متن مورد نیاز برای فایل requirements.txt را تهیه میکند که کاربران دیگر میتوانند از آن برای استفاده از پروژه بهره بگیرند.
حذف محیط
حذف کردن یک محیط با استفاده از دستور pipenv —-rm کار آسانی است. برای ایجاد مجدد آن کافی است یک بار دیگر از دستور pipenv shell استفاده کنید.
با این وجود، فایلهای موجود در دایرکتوری همچنان به همان حالت که بودند باقی میمانند. اگر میخواهید آنها را به طور کامل حذف کنید باید دایرکتوری را حذف کنید.
cd.. rm -r pipenvProject
سخن پایانی
در این مقاله به بررسی ابزارهای جدید و پیشرفته محیطهای مجازی پایتون پرداختیم که شامل pew ،venv و pipenv میشود. همچنین مزیتها و معایب هر یک را تشریح کردیم. در انتها یک خطای رایج هنگام استفاده از محیطهای مجازی پایتون را نیز بررسی میکنیم. به خطای زیر توجه کنید:
1Traceback (most recent call last):
2 File "/usr/local/bin/pew", line 7, in <module>
3 from pew.pew import pew
4 File "/usr/local/lib/python2.7/site-packages/pew/__init__.py", line 11, in <module>
5 from . import pew
6 File "/usr/local/lib/python2.7/site-packages/pew/pew.py", line 36, in <module>
7 from pew._utils import (check_call, invoke, expandpath, own, env_bin_dir,
8 File "/usr/local/lib/python2.7/site-packages/pew/_utils.py", line 22, in <module>
9 encoding = locale.getlocale()[1] or 'ascii'
10 File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 564, in getlocale
11 return _parse_localename(localename)
12 File "/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/locale.py", line 477, in _parse_localename
13 raise ValueError, 'unknown locale: %s' % localename
14ValueError: unknown locale: UTF-8
دقت کنید که اگر در هر مرحله هنگام ایجاد محیطهای مجازی با خطایی مانند خطای فوق مواجه شدید، در این صورت میتوانید آن را به سادگی اصلاح کنید. با استفاده از دستور touch یک فایل به نام bash_profile. در دایرکتوری اصلی ایجاد کنید. سپس آن را در یک ویرایشگر متنی باز کنید. ما از vim استفاده میکنیم.
touch ~/.bash_profile vim.bash_profile
دو خط زیر را به فایل اضافه کرده و پس از ذخیرهسازی، ترمینال خود را مجدداً راهاندازی کنید. بدین ترتیب مشکل حل میشود.
export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزش های برنامه نویسی پایتون
- گنجینه آموزش های برنامه نویسی پایتون (Python)
- مجموعه آموزش های برنامه نویسی
- راه اندازی محیط پایتون برای یادگیری ماشین — راهنمای کاربردی
- چگونه میتوانیم یک محیط توسعه و سرور مجازی برای برنامه نویسی وب بسازیم؟
- بهترین IDE برای پایتون — معرفی و مقایسه محیط های توسعه پایتون
==