כיצד לנהל פרויקטים של פייתון באמצעות Pipenv

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

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

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

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

איך עובד Pipenv

בדרך כלל כאשר אתה יוצר פרויקט Python ומשתמש בסביבה וירטואלית עבור החבילות שלו, אתה מוטל על המשימה ליצור את הסביבה הווירטואלית בעצמך (באמצעות הפקודה  py -m venv), להתקין תלות בתוכה ולעקב אחר התלות באופן ידני.

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

שים לב שבניגוד לכלים אחרים לניהול פרויקטים של Python (כגון שירה), Pipenv אינו מנהל את "הפיגומים" של הפרויקט שלך. כלומר, Pipenv אינו יוצר את המבנה הפנימי של ספריית הפרויקט עם בדיקות דמה, תלושי תיעוד וכו ', אלא מתמקד בעיקר בניהול חבילות וסביבה. זה הופך את Pipenv לבחירה טובה אם אתה רק רוצה כלי להתמקד בסביבות וחבילות וירטואליות, ולא בפתרון All-in-One.

התחל לעבוד עם Pipenv

Pipenv מתקינה באותו אופן כמו רוב כל חבילת פייתון אחרת: pip install --user pipenv. --userהאפשרות מומלצת לשמור Pipenv מן מתנגש עם חבילות מערכתיות אחרות. עליכם להוסיף את הנתיב לספרייה הבינארית של בסיס המשתמשים לנתיב המערכת, כך שפקודות Pipenv ינותבו למקום הנכון.

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

הקים פרויקט חדש עם Pipenv

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

התקנת חבילות לפרויקט אינה שונה באופן ניכר עם Pipenv מאשר עם Pip; למעשה התחביר זהה כמעט. פתח מסוף בספריית הפרויקט שלך והקלד pipenv install להתקנת חבילה לפרויקט. כדי לציין שהחבילה מיועדת לפיתוח , השתמש -dבדגל. אתה יכול להשתמש pip בתחביר כדי לציין גרסה ספציפית של חבילה (למשל, black==13.0b1).

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

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

בדרך כלל אינך צריך לדעת את הדרך לסביבה הווירטואלית שיוצר Pipenv. כדי להפעיל את הסביבה, פשוט נווט לספריית הפרויקט שלך והשתמש בה  pipenv shellכדי להפעיל הפעלת מעטפת חדשה או השתמש  pipenv run בהפעלת פקודה ישירות. לדוגמה, השתמש  pipenv run mypyלהפעלת גרסת כלי שורת הפקודה של mypy(בהנחה mypyשהכלי הותקן בסביבה הווירטואלית), או pipenv run python -m להפעלת מודול Python הזמין בסביבה הווירטואלית.

Pipenv ו- files

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

Pipfileהוא הפשוט יותר מבין השניים. זה רק מפרט את החבילות הדרושות לפרויקט, מהיכן הן מותקנות (ברירת המחדל היא PyPI), ואיזו גרסה של Python דרושה להפעלת הכל. Pipfile.lockמורכב יותר. הוא מפרט כל חבילה יחד עם פרטי גרסאות ו- SHA-256 hashes שנוצרו מהחבילה. השימוש ב- hashes מבטיח שהחבילות המותקנות תואמות בדיוק את מה שצוין - לא רק למספר הגרסה, אלא גם לתוכן שהתקבל.

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

השתמש בפרויקט Pipenv

אם אתה מוריד מאגר מקורות לפרויקט המשתמש ב- Pipenv לניהול חבילות, כל שעליך לעשות הוא לפרק את תוכן המאגר לספריה ולהפעיל pipenv install(אין צורך בשמות חבילות). Pipenv יקרא את Pipfileואת Pipfile.lockקבצים לפרויקט, ליצור הסביבה הווירטואלית, ולהתקין כל תלות במידת הצורך.

לבסוף, אם ברצונך להשתמש ב- Pipenv לניהול פרויקט המשתמש כרגע requirements.txtבקובץ, פשוט נווט לספריית הפרויקט והפעל אותו pipenv install. Pipenv יזהה את ה- requirements.txt(או שתוכל להשתמש -rבדגל כדי להצביע עליו) ויעביר את  כל הדרישות ל- Pipfile.