שאלת טייפינג ואימפורטים

היי שאלה לי, כהקדמה אצרף את עץ התיקיות שלי בשחמט

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

בתוך הקבצים בתת תיקייה pieces עשיתי import לColor מcolor, כלומר משהו מתיקייה מעל, כיוון שזה משתמש בזה ונראה לי לא הגיוני לעשות 2 קבצי color כיוון שאז שינוי של אחד מהם צריך לוודא שמשנים גם בשני.
כאשר אני מריצה את הדוגמה שלי מתוך chess.py אין שום בעיה.
כאשר אני מריצה סתם נניח את bishop מתוך תיקיית pieces - יש תקלה של-

אבל כאמור זה לא מפריע לכל העניין לרוץ. לא כל כך הבנתי למה

בהמשך לזה, בתרגיל מטפיי -
ניסיתי לעשות import לboard לצורך annotation של חלק מהפונקציות בחלקי המשחק שרוצים לקבל לוח.
משום מה הפעם הדוגמה מchess.py זורקת שגיאה -


ומסרבת לרוץ.

ככה שזה לא ספציפית בעיה של import מעל תיקייה.
בסופו של דבר מעניינות אותי השאלות הבאות-

  • האם ניתן לעשות import למודול בתיקיית parent? איך? כל מה שהופיע באינטרנט לא עבד אצלי. (להוסיף דברים בsettings.json, וכו)
  • איך למרות שimport של color מתיקייה מעל לא מאפשר לחלקי המשחק לרוץ בנפרד זה עדיין רץ בדוגמה בתיקייה מעל?
  • למה דווקא הimport של board שנמצא בדיוק באותה תיקייה כמו color כן מקריס את הדוגמה?

תודה :slight_smile:

אפשר לעשות אימפורט באמצעות נתיב אבסולוטי. אם את תמיד מתכוונת להריץ קובץ שנמצא בתיקיית האב, ניתן ליבא מתקיית בת באמצעות import x.y כש-x הוא שם התיקייה ו-y הוא שם הקובץ.
להבנתי, מאותה סיבה שציינתי לעיל, יש בעיה בהרצת חלקי המשחק בנפרד מכיוון וכאשר את מריצה אותם ישירות התיקייה הראשית שלך היא תיקיית הבת ותיקיית האב לא מוכרת לפייתון כנתיב חוקי.
לגבי האימפורט של board: נראה מהתמונה שאת מייבאת את board שמייבא את bishop שבתורו שוב מייבא את board. נוצר כאן ייבוא מעגלי, והוא מה שמקריס את התוכנה. פייתון לא יכול לייבא את board בשנית.
היו על כך פוסטים רבים פה בפורום וים גם דיבר על הנושא בלייב האחרון. נסי לבצע חיפוש ולאתר את הפתרונות שהוצעו כאן בעבר.

בהצלחה

לייק 1

ובצורה קצת יותר ברורה למקרה שמישהו גם יצטרך