۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

Virtualenv و venv: محیط های مجازی پایتون توضیح داده شده است

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

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

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

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

محیط های مجازی پایتون چیست؟

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

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

چرا از محیط های مجازی پایتون استفاده کنیم؟

چند مورد معمول برای یک محیط مجازی وجود دارد:

  1. شما در حال توسعه چندین پروژه هستید که به نسخه های مختلف بسته های یکسان وابسته هستند، یا پروژه ای دارید که به دلیل برخورد فضای نام باید از بسته های خاصی جدا شود. این استانداردترین مورد استفاده است.
  2. شما در یک محیط پایتون کار می‌کنید که نمی‌توانید فهرست بسته‌های سایت را تغییر دهید. این ممکن است به این دلیل باشد که شما در یک محیط بسیار کنترل شده، مانند میزبانی مدیریت شده، یا روی سروری کار می‌کنید که انتخاب مفسر (یا بسته‌های مورد استفاده در آن) به دلیل الزامات تولید قابل تغییر نیست.
  3. شما می خواهید با ترکیب خاصی از بسته ها تحت شرایط بسیار کنترل شده آزمایش کنید، به عنوان مثال برای آزمایش سازگاری متقابل یا سازگاری با عقب.
  4. شما می خواهید یک نسخه “پایه” از مفسر پایتون را روی سیستمی بدون بسته های شخص ثالث اجرا کنید و فقط بسته های شخص ثالث را برای هر پروژه جداگانه در صورت نیاز نصب کنید.

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

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

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

از پردازنده‌های گرافیکی برای برنامه‌های یادگیری ماشین حداکثر استفاده را ببرید

نحوه استفاده از محیط های مجازی در پایتون ۳

Python دارای ابزارهای بومی برای محیط های مجازی است که کل فرآیند را بسیار ساده می کند. همیشه اینطور نبود، اما اکنون همه نسخه‌های پشتیبانی شده پایتون از ابزار محیط مجازی بومی، venv استفاده می‌کنند.

ویدئوی مرتبط: چگونه پایتون برنامه‌نویسی را آسان‌تر می‌کند

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

محیط مجازی پایتون را ایجاد کنید

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

python -m venv /path/to/directory

توجه داشته باشید که اگر سیستم شما هم پایتون ۲ و هم پایتون ۳ را دارد، باید به جای python از python3 استفاده کنید. در ویندوز، می‌توانید از py به جای python  برای دسترسی مطمئن به نسخه نصب‌شده پایتون استفاده کنید. (برای اطلاعات بیشتر در مورد استفاده از راه‌انداز py در ویندوز به این مقاله مراجعه کنید.)

کل فرآیند راه اندازی محیط مجازی ممکن است یک یا دو دقیقه طول بکشد. وقتی کار تمام شد، باید یک دایرکتوری با چند زیر شاخه در آن داشته باشید. مهمترین زیرشاخه  bin در یونیکس یا Scripts در ویندوز است، جایی که می‌توانید کپی مفسر Python را برای محیط مجازی به همراه ابزارهای آن پیدا کنید.< /p>

توجه داشته باشید که چون هر محیط مجازی دارای کپی مخصوص به خود از مفسر پایتون است، می تواند نسبتاً بزرگ باشد. یک محیط مجازی Python 3.11 بسته به سیستم عامل، از ۱۲ مگابایت تا ۲۵ مگابایت فضای دیسک را مصرف می کند.

محیط مجازی پایتون را فعال کنید

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

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

  • در یونیکس یا MacOS، با استفاده از پوسته bash: source /path/to/venv/bin/activate
  • در یونیکس یا MacOS، با استفاده از پوسته csh: source /path/to/venv/bin/activate.csh
  • در یونیکس یا MacOS، با استفاده از پوسته ماهی: source /path/to/venv/bin/activate.fish
  • در ویندوز با استفاده از Command Prompt: path\to\venv\Scripts\activate.bat
  • در ویندوز با استفاده از PowerShell: path\to\venv\Scripts\Activate.ps1

توجه داشته باشید که محیط فعال فقط برای زمینه ای که در آن فعال شده است کار می کند. برای مثال، اگر دو نمونه از PowerShell، A و B را راه‌اندازی کنید، و فقط محیط مجازی را در مثال A فعال کنید، آن محیط فقط برای A اعمال می‌شود. در هیچ جای دیگری اعمال نمی‌شود.

بسیاری از IDE های پایتون به طور خودکار یک محیط مجازی را در صورت یافتن یک محیط مجازی در دایرکتوری پروژه فعلی شناسایی و فعال می کنند. برای مثال، کد ویژوال استودیو می‌تواند این کار را انجام دهد وقتی برنامه افزودنی پایتون فعال است. باز کردن یک ترمینال در داخل Visual Studio Code به طور خودکار محیط مجازی انتخاب شده را فعال می کند. PyCharm به طور خودکار یک محیط مجازی برای هر پروژه جدید ایجاد می کند.

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

هنگامی که محیط مجازی جدید را فعال کردید، می‌توانید از مدیر بسته pip برای اضافه کردن و تغییر بسته‌ها برای آن استفاده کنید. pip را در زیر شاخه Scripts محیط مجازی در ویندوز و در زیر شاخه bin در سیستم عامل‌های یونیکس پیدا خواهید کرد.

CockroachDB اکنون از Microsoft Azure، استقرار چند منطقه ای پشتیبانی می کند

اگر قبلاً با روش کار pip آشنا هستید، آماده هستید. در محیط مجازی هم باید همینطور باشد. فقط مطمئن شوید که از نمونه پیپ استفاده می کنید که بسته ها را برای محیط مجازی در زمینه ای که فعال شده مدیریت می کند – به عنوان مثال، جلسه bash یا جلسه Windows CLI/PowerShell. اگر می‌خواهید تأیید کنید که از پیپ و محیط مجازی مناسب استفاده می‌کنید، pip -V را تایپ کنید و بررسی کنید که مسیری که نمایش می‌دهد به زیر شاخه‌ای از محیط مجازی شما اشاره دارد.

توجه داشته باشید که وقتی می‌خواهید پیپ را در یک محیط مجازی ارتقا دهید، بهتر است از دستور python -m pip install -U pip استفاده کنید. این تضمین می کند که فرآیند ارتقا به گونه ای اجرا می شود که پایتون فایل های مهم را قفل نمی کند. فرمان pip install -U pip ممکن است نتواند ارتقا را به درستی تکمیل کند.

برای استفاده از محیط مجازی که برای اجرای اسکریپت های پایتون ایجاد کرده اید، کافی است پایتون را از خط فرمان در زمینه ای که آن را فعال کرده اید فراخوانی کنید. به عنوان مثال، برای اجرای یک اسکریپت، فقط python myscript.py را اجرا کنید.

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

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

وقتی یک محیط مجازی جدید ایجاد می‌کنید، بسته‌های pip و setuptools نصب می‌شوند، اما همین. شما باید هر بسته دیگری را که می خواهید در محیط استفاده کنید نصب کنید. برای پروژه‌هایی که نیازمندی‌های پیچیده هستند، باید در ریشه‌ی پروژه یک فایل requires.txt که الزامات پروژه را فهرست می‌کند، نگه دارید. به این ترتیب، اگر نیاز به ایجاد مجدد محیط مجازی دارید، می‌توانید همه بسته‌های مورد نیاز را با دستور pip install -r requires.txt دوباره نصب کنید.

اخیراً، یک قالب ابرداده پروژه جدید برای پروژه های پایتون پدیدار شده است که pyproject.toml نامیده می شود. یک فایل pyproject.toml شامل الزامات بسته پروژه و همچنین اطلاعات زیادی در مورد آن است. برای نصب این الزامات، pip install . را در همان فهرستی که فایل pyproject.toml قرار دارد اجرا کنید.

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

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

وقتی استفاده از محیط مجازی تمام شد، می‌توانید جلسه‌ای را که از آن استفاده می‌کردید خاتمه دهید. اگر می‌خواهید در همان جلسه به کار خود ادامه دهید، اما در عوض با مفسر پیش‌فرض پایتون، deactivate را در خط فرمان تایپ کنید. کاربران ویندوز در Command Prompt باید deactivate.bat را از دایرکتوری فرعی Scripts اجرا کنند، اما کاربران یونیکس و کاربران ویندوزی که PowerShell را اجرا می کنند، می توانند به سادگی deactivate را تایپ کنند. در هر دایرکتوری.

حذف محیط مجازی پایتون

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

تغییر مکان محیط مجازی پایتون

وسوسه انگیز است که فرض کنیم یک محیط مجازی را می توان کپی کرد و همراه با پروژه آن جابه جا کرد. این کار را نکن محیط های مجازی به محل نصب پایتون در سیستمی که در آن ایجاد شده اند گره خورده است. اگر می خواهید پروژه را به سیستم دیگری منتقل کنید، دایرکتوری venv را کنار بگذارید و venv را در ماشین هدف دوباره ایجاد کنید. فایل requirement.txt یا pyproject.toml را با پروژه کپی و انتقال دهید، زیرا این فایل ها برای ایجاد مجدد venv در سیستم دیگر مورد نیاز هستند.

نحوه استفاده از محیط های مجازی در پایتون ۲

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

محبوب‌ترین و پرکاربردترین این پروژه‌ها virtualenv است که ساختار دایرکتوری را ایجاد می‌کند. و کپی فایل های مورد نیاز در محیط مجازی. برای نصب virtualenv، فقط از pip install virtualenv استفاده کنید. برای ایجاد دایرکتوری محیط مجازی با آن، virtualenv /path/to/directory را تایپ کنید. فعال کردن و غیرفعال کردن محیط مجازی مانند محیط های مجازی در پایتون ۳ عمل می کند (به بالا مراجعه کنید).

توجه داشته باشید که Python 2 نباید برای هیچ توسعه جدیدی استفاده شود. محیط های مجازی در پایتون ۲، مانند خود پایتون ۲، باید فقط برای نگهداری پروژه های قدیمی استفاده شوند که در نهایت باید به پایتون ۳ منتقل شوند.

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

اگر از نوت‌بوک‌های Jupyter (معروف به نوت‌بوک‌های IPython) استفاده می‌کنید و قبلاً Jupyter را در سراسر سیستم نصب کرده‌اید، محیط مجازی خود را ایجاد کرده و آن را فعال کنید. سپس، از دایرکتوری محیط مجازی خود، pip install ipykernel را اجرا کنید تا اجزای مورد نیاز برای IPython را اضافه کنید. در نهایت، ipython kernel install —user —name= را اجرا کنید، جایی که project_name نامی است که می‌خواهید با آن پروژه خاص مرتبط کنید. از آنجا باید بتوانید Jupyter را راه اندازی کنید و به هسته IPython که در محیط مجازی نصب کرده اید سوئیچ کنید.

به روز رسانی محیط های مجازی پایتون

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

اگر یک مفسر پایتون موجود را با ارتقای نقطه جزئی ارتقا داده اید – به عنوان مثال، از Python 3.11.1 به Python 3.11.3 – می توانید هر محیط مجازی مربوطه را به راحتی به اندازه کافی ارتقا دهید. از یک خط فرمان در فهرست پروژه، وارد کنید:

python -m venv /path/to/venv --upgrade

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

از طرف دیگر، می‌توانید venv را به‌طور کامل حذف کنید و با استفاده از فایل requires.txt یا pyproject.toml خود آن را دوباره ایجاد کنید.

اگر نسخه  عمده جدیدی از پایتون را نصب کرده اید – به عنوان مثال، از قبل پایتون ۳.۱۰ را دارید و اکنون پایتون ۳.۱۱ را در کنار آن نصب کرده اید – باید یک محیط مجازی جدید ایجاد کنید که به طور خاص از نسخه جدید اصلی نقطه استفاده می کند. برای ارتقاء یک محیط مجازی موجود به نسخه اصلی بالاتر پایتون تلاش نکنید.