从 lib 目录导入文件?
Import file from lib directory?
我一直在重新组织我的项目,因为某个地方出现了问题,但是,随着编程的进行,问题现在严重了 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,然后从中导入所有内容,主要是使用 Import a file from a subdirectory? 中的建议,但没有任何效果。作为参考,我使用的是 Python 3.7.3.
我不是专家但是上周末我写了一些具有类似结构的 python 代码并使用了 from folder.file import reference 来反映文件夹结构:
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
添加到 sys 路径,python 将知道如何按照 Python - what is the libs subfolder for? 中的描述查找它。但是,我不喜欢这个解决方案,因为它会导致像这样的丑陋代码:
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/libs")
from pieceManagement import piece
import motion
所以我仍然想找到一种 pythonic 方法来完成它,也许与 import 语句内联。但我知道这有效(在我的机器上)。
我一直在重新组织我的项目,因为某个地方出现了问题,但是,随着编程的进行,问题现在严重了 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,然后从中导入所有内容,主要是使用 Import a file from a subdirectory? 中的建议,但没有任何效果。作为参考,我使用的是 Python 3.7.3.
我不是专家但是上周末我写了一些具有类似结构的 python 代码并使用了 from folder.file import reference 来反映文件夹结构:
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
添加到 sys 路径,python 将知道如何按照 Python - what is the libs subfolder for? 中的描述查找它。但是,我不喜欢这个解决方案,因为它会导致像这样的丑陋代码:
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + "/libs")
from pieceManagement import piece
import motion
所以我仍然想找到一种 pythonic 方法来完成它,也许与 import 语句内联。但我知道这有效(在我的机器上)。