مقایسه ابزارهای مختلف محیط مجازی پایتون — راهنمای جامع

۳۹۶ بازدید
آخرین به‌روزرسانی: ۰۵ مهر ۱۴۰۲
زمان مطالعه: ۶ دقیقه
مقایسه ابزارهای مختلف محیط مجازی پایتون — راهنمای جامع

هر زمان که می‌خواهید یک پروژه پایتون جدید را آغاز کنید، باید تصمیم بگیرید که قصد دارید از کدام نسخه پایتون استفاده کنید. همچنین باید از میان برخی کتابخانه‌ها یا بسته‌ها دست به انتخاب بزنید. البته یک روش دیگر هم این است که این بسته‌ها را در سطح سیستمی نصب نکنید. چون این امکان هست که همزمان بر روی پروژه‌های مختلفی کار کنید که به نسخه‌های متفاوتی از پایتون نیاز دارند. د رعین حال احتمال دارد به برخی بسته‌های خاص نیاز داشته باشید که صرفاً با یک نسخه از پایتون کار می‌کنند و روی نسخه‌های دیگر از کار می‌افتند. در چنین مواردی باید محیط‌های مختلفی برای پایتون راه‌اندازی کنیم. این محیط‌ها به نام «محیط مجازی پایتون» (Python Virtual Environments) نامیده می‌شوند.

هر محیط مجازی، فضای مجازی خاص خود را دارد. هیچ کدام از بسته‌هایی که درون آن فضا نصب می‌شوند، نمی‌توانند با بسته‌هایی که خارج از محیط هستند، تداخل داشته باشند. معکوس این حالت نیز برقرار است.

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

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
pipenv
درخواست نصب pipenv

این دو فایل در دایرکتوری ایجاد شده‌اند. Pipfile شامل فهرستی از بسته‌ها، نسخه‌های پایتون و اطلاعات دیگر است. یک فایل lock نیز به نام Pipfile.lock ایجاد می‌شود.

فایل Pipfile
فایل Pipfile
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
متن فایل Requirements

این فایل متن مورد نیاز برای فایل 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

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
towardsdatasciencetowardsdatascience
نظر شما چیست؟

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