Я реорганизовал свой проект, потому что где-то была проблема, но, как всегда бывает в программировании, проблема теперь в 10 раз хуже, и все сломано.
Мое текущее дерево файлов, которым я доволен:
Amazons AI
- .git
- Game_Code
- __pycache__
- game.py
- lib
- __pycache__
- __init__.py (empty)
- motion.py
- pieceManagement.py
- tests
- __pychache__
- test_game.py
- README.md
Моя проблема в том, что в game.py (в папке Game_Code мне нужно импортировать motion.py и pieceManagement.py (оба в каталоге lib).
Я пробовал несколько способов подняться на уровень в каталоге, импортировать lib, а затем все остальное, в основном используя предложения в Импортировать файл из подкаталога?, но ничего не сработало. Для справки, я использую Python 3.7.3.






Я не эксперт, но в прошлые выходные я написал код на Python с аналогичной структурой и использовал ссылку на импорт folder.file, чтобы отразить структуру папок:
from lib.motion import classObject as ObjectName
from lib.pieceManagement import classMethod() as MethodName()
Чтобы получить доступ к libs в родительском каталоге текущего файла, можно сделать это:
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/libs")
Он добавляет родительский словарь + /libs к системному пути, где python будет знать, как его искать, как описано в Python — для чего нужна подпапка libs?. Однако мне не нравится это решение, так как оно приводит к такому уродливому коду:
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/libs")
from pieceManagement import piece
import motion
Поэтому я все еще хотел бы найти питонический способ сделать это, возможно, встроенный в операторы импорта. Но я знаю, что это работает (на моей машине).
Не совсем уверен, почему, но я получаю ошибку
module not found.