Virtualenv ו- venv: הסברים על סביבות וירטואליות של Python

מבין כל הסיבות שפייתון הוא להיט אצל מפתחים, אחת הגדולות ביותר היא מבחר החבילות הרחב והמתרחב של חבילות צד שלישי. ערכות כלים נוחות לכל דבר, החל מבליעת ועיצוב נתונים וכלה במתמטיקה ולמידה מהירה במכונה הן פשוט importאו לא pip install.

אבל מה קורה כאשר החבילות האלה לא משחקות יפה אחת עם השנייה? מה אתה עושה כשפרויקטים שונים של Python זקוקים לגירסאות מתחרות או לא תואמות של אותם תוספות? זה המקום שבו סביבות וירטואליות של Python נכנסות לשחק.

באפשרותך ליצור ולעבוד עם סביבות וירטואליות הן ב- Python 2 והן ב- Python 3, אם כי הכלים שונים. Virtualenv הוא הכלי הנבחר עבור Python 2, בעוד ש- venv מטפל במשימה ב- Python 3. 

מהן סביבות וירטואליות של Python?

סביבה וירטואלית היא דרך לקבל מספר רב של מקרים של מתורגמן פייתון, שלכל אחד מהם ערכות חבילות שונות ותצורות שונות. כל סביבה וירטואלית מכילה עותק דיסקרטי של מתורגמן הפייתון, כולל עותקים של כלי התמיכה שלו.

החבילות המותקנות בכל סביבה וירטואלית נראות רק באותה סביבה וירטואלית ולא אחרת. אפילו חבילות גדולות ומורכבות עם בינאריות תלויות פלטפורמה ניתנות לתיקון זה מזה בסביבות וירטואליות.

ישנם מספר מקרי שימוש נפוצים בסביבה וירטואלית:

  1. אתה מפתח פרויקטים מרובים התלויים בגרסאות שונות של אותן חבילות, או שיש לך פרויקט שיש לבודדו מחבילות מסוימות בגלל התנגשות במרחב השמות. זהו מקרה השימוש הסטנדרטי ביותר.
  2. אתה עובד בסביבת פייתון שבה אינך יכול לשנות את ספריית חבילות האתר. זה יכול להיות בגלל שאתה עובד בסביבה מבוקרת מאוד, כגון אירוח מנוהל, או בשרת שבו לא ניתן לשנות את בחירת המתורגמן (או החבילות המשמשות בו) בגלל דרישות הייצור.
  3. אתה רוצה להתנסות בשילוב ספציפי של חבילות בנסיבות מבוקרות מאוד, למשל כדי לבדוק תאימות צולבת או תאימות לאחור.
  4. ברצונך להריץ גרסת "בסיסית" של מתורגמן פייתון במערכת ללא חבילות צד שלישי, ולהתקין רק חבילות צד שלישי לכל פרויקט נפרד לפי הצורך.

שום דבר לא אומר שאתה לא יכול פשוט לפרוק ספריית פייתון לתיקיית משנה של פרויקט ולהשתמש בה בצורה כזו. כמו כן, תוכל להוריד עותק עצמאי של המתורגמן של פייתון, לפרק אותו לתיקיה ולהשתמש בו להפעלת סקריפטים וחבילות המוקדשים לו.

אך ניהול פרויקטים מרוצפים כאלה הופך במהרה לקשה. זה רק נראה קל יותר לעשות זאת בהתחלה. עבודה עם חבילות בעלות רכיבים בינאריים, או המסתמכות על תלות צד ג 'מורכבת, יכולה להיות סיוט. הפתרון הטוב ביותר לטווח הארוך הוא להשתמש במנגנונים המקוריים של Python ליצירה ועבודה עם סביבות וירטואליות.

סביבות וירטואליות בפייתון 3

Virtualenv הוכיחה שהיא הכרחית עבור אינספור מפתחי Python, אך היא אינה חלק מהספרייה הסטנדרטית של Python. ל- Python 3 יש כלים מקוריים לסביבות וירטואליות שהופכים את כל התהליך לפשוט למדי.

סרטון קשור: כיצד פיתון מקל על התכנות

מושלם עבור IT, פייתון מפשט סוגים רבים של עבודה, מאוטומציה של המערכת ועד לעבודה בתחומים חדישים כמו למידת מכונה.

צור את הסביבה הווירטואלית

כדי ליצור סביבה וירטואלית בספריה נתונה, הקלד:

python3 -m venv /path/to/directory

(שים לב שאתה יכול פשוט להשתמש  pythonבמקום python3אם המערכת שלך מזהה pythonכמתורגמן ברירת המחדל של Python 3).

כל תהליך הגדרת הסביבה הווירטואלית עשוי להימשך דקה או שתיים. לאחר סיום, אמורה להיות לך ספריה ובה כמה ספריות משנה. ספריית המשנה החשובה ביותר נמצאת  binב- Unix או  Scriptsב- Windows, שם תמצא את העותק של מתורגמן ה- Python עבור הסביבה הווירטואלית יחד עם השירותים שלה.

שים לב כי מכיוון שכל סביבה וירטואלית מכילה עותק משלה של מתורגמן ה- Python, היא יכולה להיות גדולה למדי. ב- Windows ו- Linux כאחד, סביבה וירטואלית של Python 3.6 תצרוך שטח של כ- 23 מגה בייט.

הפעל את הסביבה הווירטואלית

לפני שתוכל להשתמש בסביבה וירטואלית זו, עליך להפעיל אותה במפורש . הפעלה הופכת את הסביבה הווירטואלית למתורגמן ברירת המחדל של פייתון למשך ההפעלה.

יהיה עליך להשתמש בתחביר שונה להפעלת הסביבה הווירטואלית, תלוי במערכת ההפעלה ובקליפת הפקודה שבה אתה משתמש.

  • ב- Unix או ב- MacOS, באמצעות מעטפת bash: source /path/to/venv/bin/activate
  • ב- Unix או ב- MacOS, באמצעות מעטפת csh: source /path/to/venv/bin/activate.csh
  • ב- Unix או ב- MacOS, באמצעות מעטפת הדגים: source /path/to/venv/bin/activate.fish
  • ב- Windows באמצעות שורת הפקודה:path\to\venv\Scripts\activate.bat
  • ב- Windows באמצעות PowerShell: path\to\venv\Scripts\Activate.ps1

שים לב שהסביבה המופעלת פועלת רק בהקשר בו הופעלה . לדוגמה, אם אתה מפעיל שני מופעים של PowerShell, A ו- B, ואתה מפעיל רק את הסביבה הווירטואלית למשל A, סביבה זו תחול רק על A. היא לא תחול בשום מקום אחר.

הגדר את הסביבה הווירטואלית והשתמש בה

לאחר שתפעיל את הסביבה הווירטואלית החדשה, תוכל להשתמש במנהל חבילות ה- pip כדי להוסיף ולשנות חבילות עבורה. תמצאו pip Scriptsבתיקיית המשנה של הסביבה הווירטואלית ב- Windows binובספריית המשנה ב- Unix OSes.

אם אתה כבר מכיר את האופן שבו pip עובד, אתה מסודר. זה אמור להיות זהה בסביבה וירטואלית. רק וודא שאתה משתמש במופע של pip שמנהל חבילות עבור הסביבה הווירטואלית בהקשר שבו היא הופעלה - למשל, הפעלת bash או הפעלת Windows CLI / PowerShell. אם ברצונך לוודא שאתה משתמש ב- pip הנכון ובסביבה הווירטואלית הנכונה, הקלד pip -Vובדוק שהנתיב שהוא מציג מצביע על ספריה משנה של הסביבה הווירטואלית שלך.

כדי להשתמש בסביבה הווירטואלית שיצרת להפעלת סקריפטים של Python, פשוט הפעל את Python משורת הפקודה בהקשר שבו הפעלת אותו.

השבתת הסביבה הווירטואלית

כשתסיים להשתמש בסביבה הווירטואלית, תוכל פשוט לסיים את ההפעלה שבה השתמשת בה. אם ברצונך להמשיך לעבוד בסביבה אך במקום זאת עם מתורגמן פייתון המוגדר כברירת מחדל, הקלד deactivateבהנחיה. משתמשי Windows על צורך שורת פקוד כדי להפעיל deactivate.batאת Scriptsהשרת המרוחק, אך משתמשי Unix ו- משתמשי Windows PowerShell פועלים פשוט יכולים להקליד deactivateבכל ספרייה.

הסרת הסביבה הווירטואלית

סביבות וירטואליות הן עצמאיות. כאשר אינך זקוק עוד לסביבה הווירטואלית, תוכל פשוט למחוק את הספרייה שלה.

סביבות וירטואליות בפייתון 2

עם Python 2, סביבות וירטואליות אינן מאפיין מקורי של השפה. במקום זאת, עליך להתקין ספריות צד שלישי כדי ליצור ולנהל סביבות וירטואליות.

הפופולרי ביותר והנפוץ ביותר מבין פרויקטים אלה הוא virtualenv, המטפל ביצירת מבנה הספריה והעתקת הקבצים הדרושים לסביבה וירטואלית. כדי להתקין virtualenv, פשוט השתמש pip install virtualenv. כדי ליצור עמו ספריית סביבה וירטואלית הקלד virtualenv /path/to/directory. הפעלה והשבתה של הסביבה הווירטואלית פועלת באופן זהה לסביבות וירטואליות בפייתון 3 (ראה לעיל).

שימוש בסביבות וירטואליות עם מחברות Jupyter

אם אתה משתמש במחשבי Jupyter (aka מחברות IPython), וכבר התקנת Jupyter ברחבי המערכת, צור את הסביבה הווירטואלית שלך והפעל אותה. ואז, מספריית הסביבה הווירטואלית שלך, הפעל pip install ipykernelכדי להוסיף את הרכיבים הדרושים עבור IPython. לסיום, הפעל ipython kernel install —user —name=, כאשר project_name הוא שם שברצונך לשייך לפרויקט מסוים זה. משם אתה אמור להיות מסוגל להפעיל את Jupyter ולעבור לליבת ה- IPython שהתקנת בסביבה הווירטואלית.