הצילו - פייתון - ניהול חבילות וvenv
-
רבותי, באו מים עד נפש.
הגעתי מהעולם הורוד והיפה של js-npm, כל מה שעליך להכיר זה פקודה פשוטה שקוראים לה npm i ושאר החיים יפים.
כשקיבלתי את הפרוייקט הראשון בפייתון שלא בניתי בעצמי לקח לי כמה ימים עד שהתמודדתי עם כל הבעיות והצלחתי להריצו תקין. אבל כשחשבתי שבאתי אל המנוחה והנחלה, התברר שממש לא. ברגע שרציתי להעביר את הפרוייקט לעוד מחשב - סיוט. הvenv לא עזר כלל ואף סיבך לי את החיים.
אני לא רוצה להלאות אתכם באוסף בעיות נקודתיות (החל מחבילות שנופלות שוב ושוב בלי הצדקה, כלה בvenv שלא מגיב לpath הנכון בכל מיני מצבים לא צפויים, ועוד), אני פשוט מחפש היכן אוכל ללמוד בצורה קצת יותר יסודית על סביבות וירטואליות וניהול חבילות בפייתון, ודחוף. וכדאי מאוד מאוד בעברית - אפילו בתשלום.
נ.ב. אני מבין שpip זו האפשרות הנפוצה אבל הפחות מקצועית, ומקצוענים משתמשים באנקונדה וכאלו דברים. אבל pip אמור לעבוד ובתור אחד שלא חורש פייתון אני חושב שאין סיבה שאכנס לדברים פחות קלאסיים. צריך להכיר קודם את הבסיס היטב ולוודא שהוא פועל.
נ.ב.ב. דוקר זה לא הנושא פה, על תערבו אותו בבקשה
-
קודם כל כל הכבוד שקפצת לתוך מים עמוקים במשהו שאתה לא מכיר, זו השיטה אחרת אף אחד לא יתחתן.
לגבי עברית תן לי לאכזב אותך, עוד לא גילו את השפה הזו... בינתיים אנגלית שולטת בעולם אז זה מה יש.
באנגלית יש כמה רבי מכר ביודמי (תטייל שם כנס וצא עד שתראה שהם מציעים לך בחמישים שקל את הקורס שאתה רוצה, הם תמיד מתחילים ב 800 לא לקנות!!!!) אתה תוכל לנווט די בקלות פחות או יותר לחלקים שמעניינים אותך. -
@ארכיטקט אמר בהצילו - פייתון - ניהול חבילות וvenv:
אתה תוכל לנווט די בקלות פחות או יותר לחלקים שמעניינים אותך
תודה לך, זו תגובה מעודדת. אבל ההנחה הנ"ל לא נכונה. אני אסתר איכשהו עם אנגלית אם יש לי מיקוד מראש על איזה חומר אני צריך להשתלט. אבל לשוטט ולחפש קורס+לנווט לחלקים רלוונטיים, זה משהו שאני עשוי לבזבז עליו שעות רבות לריק.
אם לא ימצא מענה ממוקד יותר כנראה זה מה שיקרה בסוף.כ"כ, איך אשלם על קורס מראש בלי שאני יודע שיש שם מה שמעניין אותי?
יש דווקא בעברית קורסים לא רעים על פייתון, חלקם חינמיים, אבל הם לא מכסים את הנושא הספציפי הזה אלא בצורה בסיסית. -
@davidnead
פשוט תשאל פה.
בגדול כל בעיה שיש לך - אם תגגל אותה ספציפית (באנגלית כמובן!) תמצא אוסף פתרונות רלוונטי..
לגבי ניהול חבילות אני ממליץ להכיר את poetry ואת pyenv. (את pyenv אפשר להשאיר בחוץ כרגע, זה בגדול מינפולציות על הPATH וזה מתכון לבעיות כשלא יודעים בדיוק איך דברים עובדים)
poetry מנהל את כל הקונפיג שלו ב2 קבצים, הראשון בשם pyproject.toml, השני בשם poetry.lock
poetry new
זה נקודת הפתיחה שלך, וpoetry add
זה כדי להוסיף תלויות.
poetry shell
יאקטב את הvenv שנוצר עבור הפרויקט.לגבי venv, אין שום סיבה להעביר את הסביבה ממחשב לאחר, מכיוון שתמיד יתכן בעיות עם חבילות שקומפלו למעבד/פלטפורמה ספציפית.
המטרה העיקרית בvenv זה למנוע קונפליקטים בין פרויקטים שונים שדורשים גרסאות שונות של חבילות וכדומה.
ברגע שיש רשימת תלויות ספציפית, חבילה + מס גרסא (ואפילו חתימה של הקובץ) - אז האפליקציה שלך תוכל לעבוד בכל מקום לאחר התקנה של התלויות.נ.ב. לא רואה שום סיבה להשתמש באנקונדה.
נ.ב.ב. דוקר זה לא הנושא, אבל אם המתכנת הקודם היה חושב על זה, היה חוסך לך הרבה בעיות.. (אז תעשה טובה ותדאג לבא אחריך? )
בעצם, דוקר זה כן הנושא. כי ברגע שאתה בונה קונטיינר שהוא עצמאי לחלוטין, זה מבטיח שיהיה לך היכרות מלאה (ומתועדת!) עם כל התלויות של האפליקציה, מרמה של ספריות מערכת, מודולי קרנל (לא באמת), ועד ספריות של פייתון ואפילו המשתני סביבה וכדומה. -
@aaron תשובה מושלמת! (אם היה כאן V כמו בSO היה מגיע לך את זה)
מצטרף להסתייגות מ-pyenv, בכל אופן למי שלא רוצה להסתבך.
זה גם דיי מסובך ליישם את זה עבור פעולות אוטומטיות (כלומר לא לשימוש אינטראקטיבי בטרמינל אלא להרצה של פרוייקט וכדו')בעיקרון 'ניהול של venv' אין כזה דבר, וכמעט לא צריך, (תלוי בקייס שלך, ובכמות הפרוייקטים שכולם נמצאים על אותה מכונה, והדינמיות שלהם בין גרסאות פייתון וכו')
פשוט עושים venv כשצריך, ומאקטבים אותו כשצריך.