קבצי קונפיגורציה בפואטרי

הגדרות שמשנות את ההתנהגות של פואטרי באמצעות קבצי הגדרות גלובליים, לוקליים ואפילו משתני סביבה.

בפוסט הקודם כתבתי הסבר על פואטרי ואיך הוא עובד ולמה לבחור בו על פני pipenv או על פני האפשרות המוקדמת יותר של pip + venv. בפוסט הזה אני אפרט קצת על קונפיגורציות מתקדמות בפואטרי שיכולות לשנות את ההתנהגות של פואטרי כמעט לגמרי – לקבוע היכן תמוקם תיקית ה-cache, לקבוע איפה תהיה תיקית ה-venv, לבחור אם להתקין את pip ב-bin ועוד שפע של שינויים. המאמר יוצא מנקודת הנחה שאתם מכירים כבר את פואטרי – אם לא, הפוסט הקודם יעשה לכם סדר (ואם בכלל אתם חדשים בעולם הסביבה של הפייתון אז הקודמים לו ויש קישורים מהפוסט על פואטרי).

אז בואו ונתחיל עם הקונפיגורציות. יש לפואטרי שתי קונפיגורציות. אחת לוקלית הנוגעת לפרויקט ואחת גלובלית. הקונפיגורציה הלוקלית מנצחת את הגלובלית.

על מנת להדגים, אני אשתמש בקונפיגורציה virtualenvs.in-project – מדובר בקונפיגורציה היוצרת את ה-venv בפרויקט עצמו ולא בתיקיה כלשהי המשותפת לכל הפרויקטים. אני באופן אישי מעדיף שזה יהיה כך. אם הקונפיגורציה הזו קיימת, poetry install יתקין את הסביבה הוירטואלית – כלומר המודולים וה-bin של פייתון, בתיקית הפרויקט. אם היא לא, הקונפיגורציה תותקן ב ״/Library/Caches/pypoetry/virtualenv/~״ במק או בתיקית המשתמש בחלונות. פחות מתאים לי.

כדי לבחון את קובץ הקונפיגורציה הגלובלית, אני יכול להקליד בכל מיקום שהוא את הפקודה:

poetry config --list

ואקבל רשימה של ההגדרות.

cache-dir = "/Users/barzik/Library/Caches/pypoetry"
experimental.new-installer = true
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
virtualenvs.create = true
virtualenvs.in-project = true
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs"  # /Users/barzik/Library/Caches/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"

הרשימה הזו מגיעה מקובץ ולא נמצאת סתם בזכרון. הקובץ נמצא במק בתיקיה הזו:

~/Library/Preferences/pypoetry/config.toml

ובחלונות בתיקיה הזו:

 %APPDATA%\pypoetry\config.toml

ובלינוקס בתיקיה הזו:

 $XDG_CONFIG_HOME/pypoetry

או בזו:

~/.config/pypoetry

אפשר לראות שזה דומה ל-pyproject.toml אבל מכיל רשימה של הגדרות.

שינוי הגדרות גלובלי

על מנת לשנות את ההגדרות באופן גלובלי, אני צריך לציין את סוג ההגדרה ואת הערך שלה. למשל virtualenvs.in-project עם ערך true תוצג כך:

poetry config virtualenvs.in-project true

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

שינוי הגדרות לוקלי

אני יכול (לא חובה) ליצור גם הגדרות לוקליות, כלומר מקומיות, שיעבדו אך ורק בפרויקט שלי. אני צריך להוסיף את הפלאג local– לפקודות שלי. למשל הפקודה הזו, אם אקליד אותה בפרויקט שפואטרי מנהלת, ישנה את virtualenvs.in-project ל-false בפרויקט הספציפי שבו אני נמצא. כלומר בפרויקט הזה והזה בלבד, ה-venv יותקן בתיקיה אחרת. אבל בפרויקטים אחרים הוא יותקן בתיקית הפרויקט.

poetry config virtualenvs.in-project false --local

אם אני אריץ את הפקודה הזו, אני אראה שנוצר בפרויקט שלי קובץ בשם poetry.toml שאני יכול להכניס לריפוזיטורי. הקובץ מכיל את כל ההגדרות שהגדרתי כ local–. אני יכול לצפות בכל ההגדרות גם כ:

poetry config --list --local

שימו לב: הפקודה תציג גם את הערכים הגלובליים אם לא דרסתי אותם.

מציאת ההגדרות

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

שימוש במשתני סביבה בהגדרות

לפעמים אנו רוצים להשתמש במשתני סביבה כהגדרות. אין שום בעיה לעשות את זה. על מנת לעשות את זה אנו צריכים לבחור בתחילית POETRY ואז להחליף את הנקודות או המקפים (-) ב״_״ ולהמיר את הכל לאותיות גדולות.

למשל, אם אני רוצה להגדיר את virtualenvs.in-project שיקבל את ערכו ממשתנה סביבה, אני:

  1. אכניס את התחילית _POETRY כך: POETRY_virtualenvs.in-project
  2. אמיר את הנקודות והמקפים ל ״_״ כך: virtualenvs_in_project
  3. אהפוך את הכל לאותיות גדולות: POETRY_VIRTUALENVS_IN_PROJECT

משתנה הסביבה הזה יקבע את virtualenvs.in-project ויהיה ראשון לפני ההגדרות השונות

export POETRY_VIRTUALENVS_IN_PROJECT=false

הנה דוגמאות נוספות להגדרות.

export POETRY_CACHE_DIR=/path/to/cache/dir
export POETRY_VIRTUALENVS_PATH=/path/to/virtualenv/dir

זה שימושי בסביבות CI שונות – שם לעתים אני צריך ורוצה לעשות אופטימיזציות של (למשל) לא להתקין את pip (אין מה לעשות איתו בסביבת פרודקשן) או להגדיל את מספר ה-retries אם האינטרנט לא משהו.

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

SSG עם next

אחרי שלמדנו במאמר הקודם מה זה SSR והבנו שלא מדובר בקליע כסף שפותר את כל הבעיות שלנו, נלמד על SSG שיכול להקל על כמה מהבעיות של SSR.

פתרונות ומאמרים על פיתוח אינטרנט

נגישות טכנית – פודקאסט ומבוא

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

גלילה לראש העמוד