מה זה בעצם pip
pip הוא הכלי שמתקין ספריות Python שלא כתבתם בעצמכם. כשמריצים pip install requests, הוא מחפש את requests ב-PyPI (ה-Python Package Index), מוריד את הגרסה המתאימה לפלטפורמה שלכם ומניח אותה בתיקיית site-packages של התקנת ה-Python. אחרי זה, import requests עובד.
כל התקנה של Python 3 מ-python.org, מ-Homebrew או ממנהל החבילות של Linux כבר מגיעה עם pip. לפני שמתקינים משהו, ודאו:
python -m pip --version
אתם אמורים לראות מספר גרסה ונתיב למודול של pip. אם הפקודה נכשלת, התיקון האמין ביותר הוא:
python -m ensurepip --upgrade
הפקודה הזו מתקינה את pip בהתקנת ה-Python שלכם בעזרת העותק שמגיע עם המפרש.
python -m pip לעומת pip
תראו את שתי הצורות. הן עושות כמעט את אותו הדבר, עם הבדל חשוב אחד: python -m pip משתמש ב-python שנמצא ב-PATH שלכם, אותו אחד שהסקריפטים שלכם משתמשים בו. pip לבד משתמש ב-pip שבמקרה מופיע ראשון, וזה לא תמיד אותו אחד.
כשמותקנת יותר מגרסת Python אחת (וקל להגיע לזה ב-macOS), pip לבד הוא הדרך להגיע למצב המבלבל של "התקנתי את הספרייה אבל הקוד שלי עדיין אומר ModuleNotFoundError".
כלל אצבע: השתמשו ב-python -m pip ... כשאתם רוצים ודאות לגבי איזה מפרש מקבל את החבילה. pip לבד מתאים לעבודה מהירה כשאתם בטוחים.
התקנת חבילה
הפקודה הבסיסית:
python -m pip install requests
הפקודה מביאה את requests מ-PyPI, יחד עם כל מה שהיא תלויה בו, ומתקינה את כולם. דקה אחר כך אפשר להשתמש בה:
התקנת כמה חבילות בבת אחת:
python -m pip install requests pandas rich
נעיצת גרסה מסוימת:
python -m pip install "django==5.0.2"
python -m pip install "requests>=2.30,<3"
המירכאות חשובות בחלק מה-shells: הן מונעות מ-== ומ-< להתפרש כאופרטורים של ה-shell.
שדרוג והסרה
python -m pip install --upgrade requests
python -m pip uninstall requests
--upgrade מביא את הגרסה החדשה ביותר שעומדת בכל אילוץ שציינתם. uninstall מסיר את החבילה אבל לא את התלויות שלה: הן נשארות עד שתסירו אותן במפורש.
כדי לשמור על pip עצמו מעודכן:
python -m pip install --upgrade pip
כדאי להריץ את זה פעם בכמה חודשים. גרסאות pip חדשות יותר תופסות יותר בעיות התקנה ופותרות תלויות טוב יותר.
לראות מה מותקן
python -m pip list
python -m pip show requests
list מציג כל חבילה שמותקנת ב-Python הנוכחי. show requests מדפיס את הגרסה, המיקום, התלויות והרישיון של החבילה הספציפית הזו, שימושי כשתוהים "באיזו גרסה של זה אני בעצם משתמש?"
requirements.txt: לתעד את התלויות
כשלפרויקט יש יותר מכמה ספריות, רשמו את הרשימה. pip freeze עושה את זה בשבילכם:
python -m pip freeze > requirements.txt
זה מפיק קובץ עם תלות נעוצה אחת בכל שורה:
django==5.0.2
requests==2.31.0
rich==13.7.1
כל מי שמשכפל את ה-repo שלכם יכול לשחזר את ההתקנה עם:
python -m pip install -r requirements.txt
pip freeze תופס את כל מה שמותקן, כולל תלויות עקיפות. זה מצוין לשחזור מדויק, אבל רועש כשרוצים רק את הספריות ברמה העליונה שהקוד שלכם באמת מייבא. פרויקטים רבים מתחזקים ידנית requirements.txt עם התלויות הישירות, ונותנים ל-pip לפתור את העקיפות.
בפרויקטים מודרניים, pyproject.toml (יחד עם כלים כמו pip-tools, uv, poetry או hatch) תופס את מקומו של requirements.txt. הרעיון זהה, "לרשום את התלויות ולהריץ פקודה שמתקינה אותן", אבל פורמט הקובץ מובנה יותר.
תמיד להתקין לתוך סביבה וירטואלית
לכל פרויקט Python אמיתי צריכה להיות סביבה וירטואלית. זו תיקייה מקומית לפרויקט עם python משלה וחבילות מותקנות משלה, כך ש-pip install בפרויקט אחד לא משפיע על אף פרויקט אחר.
ההגדרה בשתי שורות:
python -m venv .venv
source .venv/bin/activate # macOS / Linux
# או .venv\Scripts\activate ב-Windows
אחרי ההפעלה, python -m pip install requests מתקין לתוך ה-venv. ה-Python של המערכת נשאר נקי. אנחנו מסבירים את זה לעומק בעמוד על סביבות וירטואליות.
אם אי פעם תריצו pip install ותראו אזהרה על התקנה ל-Python של המערכת (או הודעה שאומרת להעביר --break-system-packages), עצרו. זה הסימן ליצור venv במקום.
כש-pip לא מצליח להתקין חבילה
כמה סוגי כשלים נפוצים ומה הם אומרים:
Could not find a version that satisfies the requirement …: בדרך כלל שגיאת הקלדה בשם החבילה, או שהחבילה דורשת Python חדשה יותר מזו שיש לכם.error: Microsoft Visual C++ 14.0 or greater is required(Windows): לחבילה יש הרחבה native והיא צריכה כלי בנייה של C++. התקינו את Build Tools של Microsoft או חפשו wheel בנוי מראש (רוב החבילות הפופולריות מספקות כאלה).Permission denied: אתם מנסים להתקין ל-Python של המערכת בלי הרשאות root. התיקון הנכון הוא לאsudo pip install, אלא סביבה וירטואלית.ModuleNotFoundErrorאחרי ההתקנה: כמעט תמיד מקרה שבוpip installהניח את החבילה ב-Python אחר מזה שמריץ את הסקריפט שלכם. בדקוwhich pythonו-which pip(macOS/Linux) אוwhere python/where pip(Windows). או, בצורה אמינה יותר, השתמשו ב-python -m pip install ....
חלופות מודרניות ל-pip
כמה כלים שתראו מוזכרים. כולם תואמים ל-pip ופותרים כאבים ספציפיים:
uv: מתקין ופותר תלויות מהיר בהרבה. תחליף ישיר לרוב פקודות pip.pipx: מתקין כלי שורת פקודה (כמוblack,ruff,httpie) ב-venvs מבודדים, כך שהם זמינים גלובלית בלי להתנגש עם התלויות של הפרויקט.poetryו-hatch: מנהלי פרויקטים שמשלבים ניהול סביבה וירטואלית, פתרון תלויות ובנייה בכלי אחד.
לא צריך אף אחד מהם ביום הראשון. למדו קודם את pip, ועברו לאחרים כשהכאב שהם פותרים יהפוך לשלכם.
הצעד הבא: סביבות וירטואליות
חבילות וסביבות וירטואליות הולכות יחד. ראיתם למה, והעמוד הבא עובר על venv בפירוט: יצירה, הפעלה, ביטול הפעלה, והמוסכמות הקטנות ששומרות על פרויקטי Python מסודרים.
שאלות נפוצות
מה זה pip ב-Python?
pip הוא מתקין החבילות של Python: הכלי שמוריד ומתקין ספריות צד שלישי מ-Python Package Index (PyPI). pip install requests מביא את הספרייה requests ושם אותה במקום שממנו מפרש ה-Python שלכם יכול לייבא אותה. הוא מגיע עם כל התקנה עדכנית של Python 3.
איך מתקינים pip?
הוא מגיע עם Python. אם pip --version מדווח שהפקודה חסרה, הריצו python -m ensurepip --upgrade או python -m pip install --upgrade pip. ב-macOS וב-Linux, השתמשו ב-pip3 אם pip רגיל לא נמצא: הוא מצביע על התקנת Python 3.
איך מעדכנים את pip?
הריצו python -m pip install --upgrade pip. שימוש ב-python -m pip במקום ב-pip לבד מבטיח שהשדרוג יחול על מפרש ה-Python שאתם באמת משתמשים בו, פרט קטן אבל חשוב כשמותקנות כמה גרסאות Python.
האם להתקין חבילות גלובלית או בסביבה וירטואלית?
בסביבה וירטואלית, בכל פעם, לכל פרויקט שהוא יותר מסקריפט חד-פעמי. התקנות גלובליות גורמות להתנגשויות גרסאות בין פרויקטים ומלכלכות את ה-Python של המערכת. המודול venv (המובנה) הוא התשובה הקצרה, ואנחנו מסבירים אותו בעמוד על סביבות וירטואליות.