Импортировать файл из каталога lib? - PullRequest
2 голосов
/ 28 июня 2019

Я реорганизовал свой проект, потому что где-то была проблема, но, поскольку программирование всегда идет, проблема теперь в 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.

Ответы [ 2 ]

0 голосов
/ 29 июня 2019

Чтобы получить доступ к libs в родительском каталоге текущего файла, можно сделать это:

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/libs")

Добавляет родительский диктор + /libs к пути sys, где 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

Так что я все же хотел бы найти питонский способ сделать это, возможно, встроенный в операторы import.Но я знаю, что это работает (на моей машине).

0 голосов
/ 28 июня 2019
Я не эксперт
...