🎯 למה סביבות וירטואליות?
כאשר עובדים על מספר פרויקטי Python במקביל, כל פרויקט עשוי לדרוש גרסאות שונות של ספריות.
ללא סביבה וירטואלית, כל החבילות מותקנות גלובלית - מה שגורם להתנגשויות ולשגיאות קשות לאיתור.
הפתרון: Virtual Environment
כל פרויקט מקבל "בועה" נפרדת עם גרסאות הספריות שלו בלבד - בלי התנגשויות, בלי כאוס.
שים לב - מיקום התיקייה
מומלץ לא לשמור סביבות וירטואליות בתוך תיקיית הפרויקט עצמו,
ובוודאי לא ב-OneDrive - זה עלול לגרום לשגיאת Access Denied.
השתמשו בתיקייה מרכזית ב-C:\py_envs.
סביבה וירטואלית אינה ניידת
הסביבה מכילה נתיבים מוחלטים ותלויה במערכת ההפעלה. אין להעתיק אותה בין מחשבים,
אין להעלות אותה ל-Git, ואין לשמור אותה בתיקייה מסונכרנת (OneDrive / Google Drive).
סביבה שסונכרנה ממחשב אחר תיראה תקינה אך לא תעבוד - וזו תקלה שקשה מאוד לאתר.
במקום להעתיק - בונים סביבה חדשה ומתקינים מחדש מתוך requirements.txt.
🚀 שלבי ההקמה
שלב 1 - יצירת תיקיית סביבות
פתחו PowerShell וצרו תיקייה מרכזית לכל הסביבות שלכם:
mkdir C:\py_envs
עושים פעם אחת בלבד
תיקייה זו תשמש את כל הפרויקטים העתידיים שלכם - אין צורך ליצור אותה שוב.
שלב 2 - יצירת סביבה לפרויקט
לכל פרויקט חדש, הריצו את הפקודה הבאה עם שם הפרויקט שלכם:
py -m venv C:\py_envs\Your-Project-Name
החליפו את Your-Project-Name בשם משמעותי לפרויקט, לדוגמה: django-blog או data-analysis.
בווינדוס - תמיד py ולא python
py הוא ה-launcher הרשמי של ווינדוס. הוא מתעלם מה-PATH ומאתר את התקנות
הפייתון דרך רישום המערכת - ולכן הוא תמיד מגיע לפייתון של ווינדוס.
python לעומת זאת מצביע על מה שנמצא ראשון ב-PATH. אם מותקנים אצלכם גם
Git Bash, WSL או MSYS2, ייתכן שייבחר פייתון שאינו של ווינדוס - והסביבה שתיווצר לא תעבוד.
בחירת גרסת פייתון
כדי לראות אילו גרסאות מותקנות במחשב:
py -0
הכוכבית מסמנת את גרסת ברירת המחדל. כדי ליצור סביבה עם גרסה מסוימת:
py -3.13 -m venv C:\py_envs\Your-Project-Name
איזו גרסה לבחור?
לא בהכרח את החדשה ביותר. ספריות רבות מגיעות כקבצים מהודרים מראש לכל גרסת פייתון בנפרד,
וגרסה שיצאה זה עתה עלולה עדיין לא להיות נתמכת - מה שיגרום לשגיאות התקנה ארוכות ומבלבלות.
גרסה שיצאה לפני שנה בערך היא בדרך כלל הבחירה הבטוחה.
שלב 3 - בחירת Interpreter ב-VS Code
כדי ש-VS Code ישתמש בסביבה החדשה:
1
פתחו את Command Palette
הקישו Ctrl + Shift + P
2
חפשו את הפקודה
הקלידו Python: Select Interpreter ובחרו אותה
3
הכניסו נתיב ידנית
לחצו על Enter interpreter path...
4
הזינו את הנתיב המלא
העתיקו את הנתיב הבא (עם שם הפרויקט שלכם):
C:\py_envs\Your-Project-Name\Scripts\python.exe
זו הדרך המומלצת
לאחר הבחירה, VS Code מפעיל את הסביבה אוטומטית בכל טרמינל חדש שנפתח, וגם מריץ איתה את הקוד -
בלי שתצטרכו להקליד שום פקודת הפעלה.
הפעלה ידנית ב-PowerShell (לא חובה)
אם אתם עובדים בטרמינל מחוץ ל-VS Code:
C:\py_envs\Your-Project-Name\Scripts\Activate.ps1
שימו לב לסיומת .ps1
בתיקייה Scripts יש שלושה קבצי הפעלה שונים.
PowerShell מזהה רק את Activate.ps1;
activate ללא סיומת מיועד ל-Bash ו-activate.bat ל-cmd.
אם מתקבלת שגיאת הרשאות, הריצו קודם את הפקודה הבאה - היא חלה על החלון הנוכחי בלבד
ואינה משנה הגדרות מערכת:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
שלב 4 - אימות הפעלת הסביבה
לאחר הבחירה, הטרמינל ב-VS Code אמור להציג את שם הסביבה בסוגריים בתחילת השורה:
(Your-Project-Name) PS C:\Project_Path >
הסוגריים אינן הוכחה מספקת
הסוגריים יופיעו גם כאשר הסביבה פגומה. הבדיקה שבאמת קובעת היא לשאול את פייתון
מאיפה הוא רץ:
python -c "import sys; print(sys.executable)"
הפלט חייב להיות הנתיב לסביבה שלכם, ולהסתיים ב-Scripts\python.exe:
C:\py_envs\Your-Project-Name\Scripts\python.exe
הסביבה פעילה!
אם זה הנתיב שקיבלתם - הכל מוכן. כל חבילה שתתקינו תיכנס לסביבה זו בלבד.
אם רואים bin במקום Scripts
בווינדוס התיקייה נקראת תמיד Scripts.
bin היא פריסה של Linux ו-Mac - וקיומה מעידה שהסביבה נוצרה
על ידי פייתון שאינו של ווינדוס, או שהועתקה ממחשב אחר.
הפתרון: למחוק את הסביבה, ולבנות אותה מחדש עם py -m venv כמתואר בשלב 2.
לא רואים את הסוגריים?
פתחו טרמינל חדש ב-VS Code (Ctrl + `) - VS Code מחיל את ההגדרה רק על טרמינלים חדשים.
שלב 5 - התקנת חבילות
כעת כל חבילה שתתקינו תיכנס לסביבה הנוכחית בלבד:
python -m pip install package-name
לדוגמה:
python -m pip install numpy pandas matplotlib
למה python -m pip ולא רק pip?
הכתיב python -m pip מבטיח שההתקנה תלך בדיוק לאותו מפרש
שיריץ את הקוד שלכם. הפקודה pip לבדה עלולה להצביע על התקנה גלובלית -
וזה מקור נפוץ לשגיאת ModuleNotFoundError על חבילה שבטוחים שהותקנה.
📦 שיתוף פרויקט
📄 שמירת ושיתוף חבילות עם requirements.txt
כדי שאחרים (או אתם על מחשב אחר) יוכלו להתקין את אותן חבילות בדיוק:
שמירת רשימת החבילות
הריצו בטרמינל כדי ליצור את הקובץ:
python -m pip freeze > requirements.txt
התקנה מתוך הקובץ
במחשב אחר, לאחר יצירת סביבה וירטואלית חדשה, הריצו:
python -m pip install -r requirements.txt
שיטת עבודה מומלצת
הוסיפו את requirements.txt ל-Git שלכם - כך כל חבר צוות יוכל לשחזר את הסביבה בדיוק.
ובאותה הזדמנות - הוסיפו את תיקיית הסביבה עצמה ל-.gitignore. הקוד עולה ל-Git, הסביבה לא.
מה pip freeze באמת שומר
הפקודה שומרת את כל החבילות שבסביבה - כולל תלויות עקיפות שלא התקנתם בעצמכם,
ולעיתים גם חבילות ספציפיות למערכת ההפעלה. קובץ שנוצר בווינדוס עלול להיכשל ב-Mac.
לפרויקטים שמשותפים בין מערכות הפעלה שונות, עדיף לתחזק את הקובץ ידנית ולרשום בו
רק את החבילות שבאמת נדרשות.
🔄 אלטרנטיבות
⚖️ מתי venv ומתי משהו אחר?
לפני שמשווים בין הכלים, חשוב להבין נקודה אחת: הם אינם פותרים את אותה בעיה.
ההבדל ביניהם אינו בנוחות או במהירות, אלא בגודל הבועה שכל אחד מהם יוצר.
venv מבודד ספריות פייתון בלבד. זה מספיק לרוב המוחלט של הפרויקטים.
conda מבודד גם רכיבים מהודרים שאינם פייתון - ספריות מתמטיות, מנועי חישוב, כלים שנכתבו ב-C או ב-Fortran.
Docker מבודד מערכת הפעלה שלמה - כולל גרסת פייתון, ספריות מערכת, משתני סביבה וקבצי הגדרה.
ככל שהבועה גדולה יותר, הבידוד חזק יותר - אבל גם ההקמה איטית יותר, כבדה יותר, ודורשת יותר ידע.
בוחרים את הבועה הקטנה ביותר שפותרת את הבעיה שלכם.
| הכלי |
מה הוא מבודד |
מתי לבחור בו |
| venv + pip |
ספריות פייתון בלבד |
ברירת המחדל. מובנה בפייתון, אין מה להתקין. מתאים לכל פרויקט לימודי או פרויקט פייתון רגיל. |
| uv |
ספריות פייתון + גרסת הפייתון עצמה |
כשההתקנה איטית מדי או כשצריך לנעול גרסאות בצוות. מהיר משמעותית מ-pip, אך דורש התקנה נפרדת. |
| conda |
ספריות פייתון + רכיבים מהודרים שאינם פייתון |
מדעי נתונים ולמידת מכונה, כשספרייה מסרבת להתקין ב-pip בגלל רכיב חסר במערכת. |
| Docker |
מערכת הפעלה שלמה |
הרצה על שרת, פריסה לייצור, או כשצריך שכל חברי הצוות יריצו סביבה זהה לחלוטין. |
ומתי התקנה גלובלית דווקא בסדר?
עבור כלים ולא ספריות - למשל כלי עיצוב קוד או כלי שורת פקודה שאתם מפעילים
מכל מקום ואינם חלק משום פרויקט מסוים. אלה אינם נכנסים ל-requirements.txt של אף פרויקט, ולכן אין סכנת התנגשות.
כל דבר שהקוד שלכם מייבא - שייך לסביבה הווירטואלית.
💡 טיפים ופתרון בעיות
💡 בעיות נפוצות
🚨 נוצרה תיקיית bin במקום Scripts
הבעיה הפקודה python -m venv הופעלה על ידי פייתון שאינו של ווינדוס (Git Bash, WSL או MSYS2 שנתפסו ראשונים ב-PATH). הסביבה נוצרת ללא הודעת שגיאה, אך activate לא נמצא ושום חבילה לא נטענת.
האבחון להריץ python -c "import sys; print(sys.executable)" ולבדוק אם הנתיב מכיל bin.
הפתרון למחוק את הסביבה ולבנות מחדש עם py -m venv במקום python -m venv.
🚨 שגיאת ModuleNotFoundError על חבילה שהתקנתי
הבעיה ההתקנה הלכה למפרש אחד והקוד רץ במפרש אחר.
האבחון להשוות בין שתי הפקודות - הנתיב חייב להיות זהה:
python -c "import sys; print(sys.executable)"
python -m pip -V
הפתרון להשתמש תמיד ב-python -m pip install ולא ב-pip install.
⚠️ הפקודה activate לא מזוהה ב-PowerShell
הבעיה PowerShell מזהה רק קבצי .ps1. הקובץ activate ללא סיומת מיועד ל-Bash.
הפתרון להוסיף את הסיומת: ...\Scripts\Activate.ps1. אם מתקבלת שגיאת הרשאות, להריץ קודם Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass.
🚨 שגיאת Access Denied בעת יצירת הסביבה
הבעיה הסביבה נמצאת בתיקיית OneDrive או בתיקייה מוגנת.
הפתרון צרו את הסביבה ב-C:\py_envs בלבד - מחוץ ל-OneDrive ומחוץ לתיקיית הפרויקט.
⚠️ הפרויקט עצמו נמצא ב-OneDrive
הבעיה קבצים שנכתבים תוך כדי ריצה (בסיסי נתונים, קבצי מטמון) עלולים להינעל באמצע סנכרון, ותיקיות שלא הורדו במלואן נראות קיימות אך אינן ניתנות לפתיחה.
הפתרון הקוד יכול להישאר ב-OneDrive - הסביבה הווירטואלית חייבת להיות מחוץ לו, ב-C:\py_envs. בנוסף, לחצו לחיצה ימנית על תיקיית הפרויקט ובחרו Always keep on this device.
⚠️ נתיב הפרויקט מכיל עברית או רווחים
הבעיה כלים מסוימים, ובעיקר קבצי הגדרות שמכילים נתיבים מוחלטים, אינם מטפלים היטב בעברית או ברווחים בנתיב. השגיאות שנוצרות אינן מרמזות על הסיבה.
הפתרון להחזיק פרויקטי קוד בנתיב באנגלית וללא רווחים. שם התיקייה יכול להיות קצר ואנגלי גם אם התוכן עברי.
⚠️ VS Code לא מזהה את הסביבה
הבעיה VS Code ממשיך להשתמש ב-Python הגלובלי.
הפתרון וודאו שהנתיב מסתיים ב-Scripts\python.exe ופתחו טרמינל חדש לאחר הבחירה.
⚠️ הפקודה python לא מזוהה
הבעיה Python לא מותקן או לא נוסף ל-PATH.
הפתרון הורידו Python מ-python.org ובזמן ההתקנה סמנו את האפשרות "Add Python to PATH". עדיף להימנע מהתקנה דרך Microsoft Store, שיוצרת לעיתים בעיות הרשאות.