Menu

pip ב-Python: התקנת חבילות, ניהול גרסאות ושימוש ב-PyPI

איך מתקינים, משדרגים ומסירים חבילות Python עם pip, כולל PyPI, קובצי requirements והימנעות ממלכודת ההתקנה הגלובלית.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

מה זה בעצם 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 (המובנה) הוא התשובה הקצרה, ואנחנו מסבירים אותו בעמוד על סביבות וירטואליות.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל