اکثر تازه واردان پایتون نمی دانند که چگونه محیط توسعه ای را دنبال کنند که از آخرین استانداردهای برنامه نویسان حرفه ای استفاده کند. این آموزش به شما می آموزد که چگونه با استفاده از بهترین روشهای پذیرفته شده در صنعت ، یک محیط کاملاً مناسب برای توسعه پایتون درست ایجاد کنید.

محیط های مجازی

یک محیط مجازی به ما کمک می کند تا با ایجاد محیط های جدا شده ، تعارضات وابستگی پروژه را حل کنیم. این “محیط های منزوی” حاوی تمام موارد خوبی است که ممکن است برنامه نویسان پایتون برای توسعه پروژه های خود لازم داشته باشند.

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

استفاده از محیط های مجازی مزایای زیر را به ما می دهد:

  • ما می توانیم بسته های ماشین محلی خود را دست نخورده حفظ کنیم
  • ما می توانیم وابستگی ها را با دیگران به اشتراک بگذاریم requirements.txt فایل
  • ما می توانیم یک برنامه پایتون را در یک سرور اختصاصی مستقر کنیم (PythonAnyWhere ، Heroku و غیره)

نیاز به محیط های مجازی

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

اگر شما یک توسعه دهنده جنگو هستید ، اطمینان دارم که از آن استفاده می کنید چارچوب استراحت جنگو برای ایجاد API های قدرتمند استراحت ، Django Debug Toolbar برای جمع آوری اطلاعات مختلف اشکال زدایی در مورد درخواست / پاسخ فعلی ، کرفس برای مراقبت از عملیات در زمان واقعی و همچنین برنامه ریزی و غیره.

به عنوان مثال ، من به شدت به requests بسته برخی از پروژه های من ، و یک برنامه وب Django که در حال حاضر روی آن کار می کنم بستگی به نسخه 2.3.0 دارد. طبق اسناد رسمی ، در زمان نگارش آخرین نسخه این بسته نسخه 3.2 است.

بیایید فرض کنیم من جلوتر می روم و آخرین نسخه کتابخانه را روی دستگاه اوبونتو نصب می کنم ، زیرا برای پروژه دیگری به کتابخانه احتیاج دارم. به نظر می رسد همه چیز خوب کار می کند تا زمانی که من سعی می کنم از پروژه قدیمی خود استفاده کنم که با 2.3.0 خوب کار کرده است. ناگهان همه چیز خراب می شود.

چی شد؟ شاید API آخرین نسخه Django از نسخه 2.3.0 تغییر کرده باشد؟ در این مرحله دلیل مهم نیست ، زیرا پروژه قدیمی من خراب است و دیگر کار نمی کند.

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

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

قبل از شروع

در این آموزش ، ما از پایتون 3 استفاده خواهیم کرد ، بنابراین بیایید با بررسی نصب پایتون شروع کنیم.

برای انجام این کار ، یک ترمینال – cmd / PowerShell را در ویندوز – باز کنید و دستور زیر را تایپ کنید:

python --version

Python 3.9.5 

توجه: اکثر سیستم های macOS و Linux پایتون را نصب کرده اند. می توانید بررسی کنید راهنمای نصب پایتون اگر از ویندوز استفاده می کنید.

اگر نتیجه ای از فرم نگرفتید Python 3.x دو گزینه وجود دارد:

  • اگر این دستور بازگشت Python 2.x نسخه ، شما نیاز به استفاده از python3 همراه با این آموزش
  • اگه گرفتی Unknown command خطا ، سعی کنید اجرا کنید python3، و اگر خطای دیگری دریافت کردید ، راهنمای نصب پایتون را دنبال کنید

شما می توانید وجود آن را اثبات کنید python3 باینری با بررسی نسخه آن:

python3 --version

Python 3.9.5

توجه: اگر دستور بالا کار کرد ، باید اجرا کنید python3 بجای python.

حالا که دانستید کدام دستور پایتون روی دستگاه شما اجرا می شود ، بیایید وارد محیط های مجازی شویم.

داخلی venv مدول

بیایید از پایتون داخلی استفاده کنیم ماژول venv برای ایجاد اولین محیط مجازی

توجه: برای استفاده از این ماژول به Python 3.3 یا بالاتر نیاز دارید که در سیستم شما نصب شده باشد.

برای ایجاد یک محیط مجازی پایتون با venv، دستور زیر را تایپ کنید:

python -m venv virt1

توجه داشته باشید که -m flag به معنی پایتون است که داخلی را اجرا می کند venv ماژول به عنوان یک اسکریپت.

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

همه چیز نصب شده در virt1 دایرکتوری روی بسته های جهانی یا نصب در کل سیستم تأثیر نخواهد گذاشت ، بنابراین از درگیری های وابستگی جلوگیری می کند.

فعال کردن محیط های مجازی

بسیار مهم است که بدانید هر بار که می خواهیم از یک محیط مجازی ایجاد شده استفاده کنیم ، باید آن را با دستور زیر فعال کنیم:

source virt1/bin/activate

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

سکو پوسته دستور فعال سازی محیط مجازی
POSIX bash / zsh $ source (venv-name) / bin / فعال کنید
ماهی $ منبع (venv-name) /bin/activate.fish
csh / tcsh $ source (venv-name) /bin/activate.csh
هسته PowerShell $ (venv-name) /bin/Activate.ps1
پنجره ها cmd.exe C:> (venv-name) Scripts activ.bat
PowerShell PS C:> (نام venv) Scripts Activate.ps1

توجه داشته باشید که $ در POSIX و C:>، PS C:> علائم موجود در ویندوز بخشی از این دستور نیست.

همانطور که مشاهده کردید ، من از یک پوسته bash در POSIX (macOS و Linux) استفاده می کنم ، به همین دلیل دستور بالا را اجرا می کنم.

بعد از ایجاد محیط

پس از فعال شدن محیط مجازی ، سریع ترمینال تغییر می کند.

محیط فعال شده

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

deactivate

توجه داشته باشید که چگونه فرمان ترمینال شما دوباره تغییر کرده است.

محیط غیرفعال شده

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

source virt1/bin/activate
which python

اگر همه چیز خوب کار کرد ، باید چیزی مشابه خروجی زیر بدست آورید:

/home/daniel/tests/python-tests/venvs/virt1/bin/python

اگر شما deactivate و which باز هم ، شما باید یک خروجی متفاوت بگیرید:

deactivate
/usr/bin/python

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

پیپ با محیط های مجازی

اگرچه این یک راهنمای pip نیست ، اما نشان دادن گردش کار بین pip و محیط های مجازی مهم است.

پیپ زدن – نام آن مخفف “Pip Installs Packages” است – مدیر بسته ای است که برای نصب و مدیریت بسته های Python استفاده می شود.

وقتی می خواهید پروژه خود را به دیگران توزیع کنید بسیار مفید است ، زیرا به سایر توسعه دهندگان – و کاربران نهایی – امکان می دهد تمام وابستگی های پروژه شما را با یک نگاه نصب کنند.

به عنوان مثال ، یک توسعه دهنده دیگر می تواند یک محیط مجازی را فعال کرده و سپس دستور زیر را برای نصب وابستگی های پروژه اجرا کند:

pip install -r requirements.txt

اینجا، requirements.txt فایلی است که شامل تمام وابستگی های پروژه است – نسخه های خاص بسته ها.

برای ایجاد فایل وابستگی پروژه خود ، می توانید دستور زیر را اجرا کنید:

pip freeze > requirements.txt

اگر می خواهید نسخه خاصی از بسته را نصب کنید ، می توانید اجرا کنید pip install به دنبال نام بسته ، علامت برابر دو برابر (==) ، و نسخه آن:

pip install package==version

در شرایط دیگر ، ما همچنین می توانیم بسته ای را از دستگاه خود (یا محیط مجازی) حذف نصب کنیم:

pip uninstall some-package-name

Virtualenv

Virtualenv یک بسته خارجی است که برای ایجاد محیط های مجازی استفاده می شود. در واقع ، پایتون ساخته شده است venv زیرمجموعه ای از آن است ، بنابراین virtualenv دارای ویژگی های بیشتری نسبت به گزینه اول است که ما دیدیم. شما می توانید درباره virtualenv برتری نسبت به venv در اسناد رسمی.

در حال حاضر ، بیایید نصب کنیم virtualenv با pip (مطمئن شوید که مورد قبلی را غیرفعال کرده اید) venv) استفاده از دستور زیر:

pip install virtualenv

این ابزار شبیه به venv، بنابراین بیایید با ایجاد یک محیط مجازی دیگر آن را آزمایش کنیم:

virtualenv virt2

توجه: مطمئن باشید deactivate محیط دیگر قبل از اجرای دستور بالا.

مثل با venv، ما باید محیط مجازی را قبل از استفاده فعال کنیم:

source virt2/bin/activate

اگر اکنون جدیدترین نسخه درخواست ها را نصب کنم ، فقط در محیط مجازی نصب می شود venv2:

pip install requests

دستور بالا خروجی زیر را تولید می کند:

Collecting requests
 ...
Installing collected packages: urllib3, idna, chardet, certifi, requests
Successfully installed certifi-2021.5.30 chardet-4.0.0 idna-2.10 requests-2.25.1 urllib3-1.26.5

اگر من اجرا کنم pip freeze دستور ، لیستی از تمام بسته های نصب شده من را چاپ می کند ، این را دریافت می کنم:

certifi==2021.5.30
chardet==4.0.0
idna==2.10
requests==2.25.1
urllib3==1.26.5

همانطور که مشاهده می کنید ، تنها بسته هایی که دریافت می کنم آخرین نسخه آنها هستند requests – در زمان نوشتن مقاله – و وابستگی های آن.

سایر ویژگی های Virtualenv

ما می توانیم از -p هنگام کار با پرچم virtualenv برای استفاده از نسخه خاصی از پایتون که بصورت جهانی بر روی دستگاه نصب شده است.

به عنوان مثال ، می توان از دستور زیر برای ایجاد محیط مجازی استفاده کرد virt2 اگر Python3 را روی دستگاه خود نصب کرده اید ، Python3 را در آن قرار دهید:

virtualenv -p /usr/bin/python3 virt2

و برای حذف یک محیط مجازی ، از rm -r همانطور که برای هر فهرست دیگری که می خواهید حذف کنید دستور دهید:

rm -r virt2

می توانید درباره استفاده پیشرفته از رابط virtualenv CLI در اینجا بیشتر بیاموزید اسناد رسمی.

Virtualenvwrapper

Virtualenvwrapper با سازماندهی همه آنها در یک مکان ساده ، دستورات بسیار مفیدی را ارائه می دهد که کار با محیط های مجازی را حتی ساده تر می کند.

همانند virtualenv ، می توان آن را به راحتی با pip نصب کرد.

pip install virtualenvwrapper

با این کار یک پرونده پوسته ایجاد می شود virtualenvwrapper.sh واقع در شما ~/.local/bin/ فهرست راهنما. این پوشه برای ذخیره باینری بسته استفاده می شود که به شما امکان می دهد مستقیماً از پایانه خود از بسته های Python استفاده کنید.

قبل از استفاده از virtualenvwrapper ، باید فایل پیکربندی پوسته خود را ویرایش کنید. از آنجا که من از پوسته bash استفاده می کنم ، محتوای زیر را به .bashrc پرونده ، واقع در فهرست اصلی من:

cat <<EOT>> ~/.bashrc

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=~/.local/bin/virtualenv
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Documents
source ~/.local/bin/virtualenvwrapper.sh
EOT

این مطلب – در انتهای پرونده بنویسید – محتوای فوق را به .bashrc فایل. اگر دستور بالا کار نکرد ، پرونده را باز کنید و آن را به صورت دستی اصلاح کنید.

VIRTUALENVWRAPPER_PYTHON به باینری پایتون دستگاه شما اشاره می کند. با دستور زیر می توانید آن را بررسی کنید (بدون فعال شدن محیط مجازی):

which python

/usr/bin/python 

حتماً اصلاح کنید .bashrc با توجه به مسیر باینری پایتون فایل کنید.

توجه: اگر از ویندوز استفاده می کنید ، می توانید استفاده کنید virtualenvwrapper-win.

سپس ، bash shell را با تغییراتی که در آن ایجاد کردیم دوباره بارگیری می کنیم .bashrc با اجرای دستور زیر پرونده را وارد کنید:

source ~/.bashrc

در حال حاضر mkvirtualenv با استفاده از دستور می توان به راحتی محیط های جدیدی را که به طور پیش فرض درون این پوشه قرار می گیرند ، ایجاد کرد:

mkvirtualenv sitepoint

می توانی ببینی sitepoint پوشه محیط مجازی با ورود به WORKON_HOME مسیری که در بالا آن را تعریف کردیم $HOME/.virtualenvs:

ls ~/.virtualenvs

sitepoint 

برای دریافت لیستی از تمام محیط های مجازی ایجاد شده توسط virtualenvwrapper ، می توانید آن را اجرا کنید workon دستور بدون استدلال:

workon

sitepoint 

ما می توانیم به راحتی محیط مجازی را با کمک workon دستور:

workon sitepoint

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

deactivate

جابجایی بین محیط های مختلف مجازی بسیار آسان است. مثلاً به workon یک محیط مجازی دیگر:

workon another_virtualenv

برای حذف یک محیط مجازی ، دستور rmvirtualenv باید استفاده شود:

rmvirtualenv sitepoint

نتیجه

در این آموزش ، شما در مورد روند کار ضروری که هر توسعه دهنده Python باید تسلط داشته باشد ، یاد گرفته اید. محیط های مجازی بخش مهمی در هر پروژه همکاری پایتون است ، و شما می توانید بلافاصله با استفاده از آنها بهره وری خود را بهبود ببخشید.

ابزار موجود است. اکنون زمان آن فرا رسیده است که آنها را در پروژه های شخصی به چالش بکشید. آیا در روند کار توسعه پایتون از رویکردهای جالب دیگری استفاده می کنید؟ در فروم پایتون به ما اطلاع دهید!