وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

مدیریت محیط های پایتون با direnv و pyenv

0 23
زمان لازم برای مطالعه: 4 دقیقه


معرفی

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

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

انجام مکرر کاری، اتوماسیون را تضمین می کند. در این مقاله خواهیم دید که چگونه direnv و pyenv می تواند به ما در انجام آن کمک کند.

به عنوان یک نکته جانبی، برخی از IDE های مدرن قبلاً این مراحل را خودکار کرده اند. به عنوان مثال، PyCharm هنگام مقداردهی اولیه یک پروژه، محیط مجازی را ایجاد می کند:

PyCharm خودکار است python مدیریت محیط زیست

اگرچه اگر از IDE هایی استفاده کنیم که از چنین قابلیت هایی پشتیبانی می کنند، خودکارسازی تمام این مراحل یک پیروزی بزرگ است، راه حل عمومی تر باید IDE-Agnostic باشد.

مشکلات از virtualenv

تصور کنید ما یک پروژه پیدا کردیم روی GitHub و ما دوست داریم با آن بازی کنیم. Pyweather یک اسکریپت ساده است که پیش بینی آب و هوای طولانی را برای مکان ما درخواست می کند و آن را چاپ می کند روی را terminal.

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

$ git clone https://github.com/lcofre/pyweather.git
$ cd pyweather

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

$ virtualenv --python=python3 env
$ source env/bin/activate
(env) $ pip install requirements.txt

و تنها پس از آن، می توانیم اسکریپت را اجرا کنیم:

(env) $ ./pyweather.py	

ما یک محیط مجازی ایجاد کردیم و آن را در آن ذخیره کردیم root پوشه پروژه ما در حالی که در آن پوشه بودیم باید محیط را با آن فعال می کردیم source فرمان

پس از اتمام کار، باید با اجرا از محیط مجازی خارج شویم deactivate:

(env) $ deactivate

تمام این مراحل مسئولیت ماست. چند بار ممکن است فراموش کرده باشیم که یک محیط را فعال کنیم و یک بسته را به صورت جهانی نصب کنیم!

بیایید ببینیم چگونه direnv به ما کمک می کند این را خودکار کنیم.

direnv

direnv بسته به اینکه عمدتاً برای بارگذاری متغیرهای محیطی ساخته شده است روی دایرکتوری فعلی و دارای پسوندی برای بسیاری از پوسته ها است.

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

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

$ curl -sfL https://direnv.net/install.sh | bash

حالا ما نیاز داریم hook direnv به bash. ما ویرایش می کنیم ~/.bashrc و سپس آن را دوباره بارگذاری کنید:

$ echo 'eval "$(direnv hook bash)"' >> ~/.bashrc
$ source ~/.bashrc

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

direnv بررسی می کند که آیا چیزی باید بارگذاری شود روی پوشه فعلی وجود فایلی به نام را بررسی می کند .envrc، با دستورالعمل روی چه چیزی باید بارگذاری شود

برای بارگذاری محیط های مجازی پایتون، ما را اجرا می کنیم layout دستور و به دنبال آن نسخه پایتون:

$ echo 'layout python' > .envrc

یا اگر بخواهیم از پایتون 3 استفاده کنیم:

$ echo 'layout python3' > .envrc

اجرای اینها نشان خواهد داد direnv به دنبال a python یا python3 قابل اجرا روی مسیر.

به محض ایجاد .envrc به ما هشدار داده می شود که باید اجازه دهیم direnv برای دسترسی به آن پوشه بیایید همین الان این کار را انجام دهیم:

$ direnv allow
direnv: loading .envrc
...
New python executable in /home/myuser/untitled/.direnv/python-3.6.9/bin/python3
...
Installing setuptools, pkg_resources, pip, wheel...direnv:
done.
direnv: export +VIRTUAL_ENV ~PATH

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

اکنون می توانیم بسته های مورد نیاز خود را همانطور که انجام دادیم نصب کنیم روی محیطی که در قسمت قبل ایجاد کردیم:

$ pip install -r requirements.txt

direnv بی صدا محیط را در پس زمینه فعال می کند. هر زمان که از دایرکتوری خارج شویم، محیط غیرفعال می شود:

$ cd ..
direnv: unloading

اگر بتوانیم از هر نسخه پایتونی که نصب شده است استفاده کنیم روی سیستم، direnv تمام چیزی است که ما نیاز داریم

بیایید اکنون فرض کنیم که ما pyweather اسکریپت به یک نسخه بسیار خاص نیاز دارد.

pyenv

pyenv یک ابزار مدیریت نسخه برای پایتون است. از جمله موارد دیگر، امکان تغییر نسخه های پایتون را فراهم می کند روی بر اساس هر پروژه direnv از زمان نسخه پشتیبانی از آن را فراهم می کند 2.21.0، بنابراین با هم می توانند سطح بالاتری از کنترل را به ما بدهند روی نسخه ای که در محیط خود استفاده می کنیم.

بیایید با نصب شروع کنیم pyenv:

$ curl -L https://pyenv.run | bash

و سپس اطمینان حاصل کنیم که همیشه در دسترس ما خواهد بود terminal:

$ echo 'export PATH="~/.pyenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ source ~/.bashrc

حالا بیایید خودمان را فرض کنیم pyweather اسکریپت به یک نسخه پایتون بسیار خاص نیاز دارد، 3.6.2.

ابتدا باید آن نسخه از پایتون را نصب کنیم:

$ pyenv install 3.6.2

و اکنون می توانیم پروژه خود را برای استفاده از نسخه خاص پیکربندی کنیم:

$ echo 'layout pyenv 3.6.2' > .envrc
$ direnv allow

ما می توانیم با بررسی نسخه پایتون در محیط، همه کارها را همانطور که انتظار می رود تأیید کنیم:

$ python --version
Python 3.6.2

اگر زمانی نیاز به تغییر نسخه پایتون داشته باشیم، برای ما کافی است که چیدمان را در آن تغییر دهیم .envrc فایل.

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

یکی دیگر از مزایای استفاده از هر دو direnv و pyenv این است که ما می توانیم نسخه خود را .envrc فایل در مخزن پروژه ما.

به این ترتیب همه مشارکت‌کنندگان می‌توانند تا زمانی که برنامه‌های کاربردی و نسخه پایتون مورد نیاز را نصب کنند، محیط خود را همانطور که پروژه در نظر گرفته است پیکربندی کنند.

نتیجه

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

نصب هر دو ابزار ساده نیست، اما پس از یک بار انجام، در زمان خود صرفه جویی می کنیم. همچنین همیشه این اطمینان را خواهیم داشت که با محیط مجازی مناسب و نسخه پایتون کار می کنیم.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-16 21:31:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید