![](/img/trans.png)
[英]Why can't I import package from sibling directory in python even with use of __init__.py?
[英]Why can't I import from sibling folder?
使用 python 从头开始创建应用程序仍然有点新。 这是我的文件结构
Sudoku
|--__init__.py
|--game.py
|--__pycache__
|--components
|---__init__py.
|--board.py
|__pycache__(not sure how this got here?)
|--gui
|--__init__.py
|--gui.kv
|--solver
|--__init__.py
|--mysolver.py
我有一个正在运行的 Sudou 游戏,我的组件和 gui 模块在我的game.py
中使用。 现在我正在尝试编写一个数独求解器,它使用继承了我拥有的Board
class(因为它有一些有用的方法并且有棋盘数据)。
在我的solver.mysolver.py
中,我尝试from components.board import Board
,上面写着“没有名为组件的模块”,这是有道理的,因为它们不在同一级别。
当我尝试from.components.board import Board
我认为可以工作时,我attempted relative import with no known parent package
。 我怎样才能让我所有的包“知道”他们的父 package 是什么? 我所有的__init__.py
文件都是空的——不应该是吗? 我的结构也有问题 - 我的components
文件夹中有一个__pycache__
,我不知道为什么。 我在 components 文件夹中直接测试了我的board.py
有一段时间 - 这是创建这个的原因吗?
从树外部导入您当前文件夹的根目录是很棘手的。 要从父文件夹或同级文件夹导入,请尝试使用以下命令开始导入:
import sys
sys.path.append("..")
这会将父文件夹添加到文件夹的路径列表中,以查找使您的兄弟姐妹可见的模块。 这有点恶心,但它对我来说是一种快速修复。
当我第一次开始使用 python 时,我也遇到了这个布局问题。 想要拥有像求解器一样使用所有相同代码的可运行脚本的诱惑。 Python 真的不希望我们这样布局。
如果 mysolver.py 位于 game.py 的根文件夹中,您可能会发现处理一般事物会更容易。
假设我想从 board.py 导入,我在 game.py 中的导入语句就像
from components.board import <my_class_name>
pycache是编译好的 pyhton 类
Sudoku
|--__init__.py
|--game.py
|--__pycache__
|--components
|---__init__py.
|--board.py
|__pycache__(not sure how this got here?)
|--gui
|--__init__.py
|--gui.kv
|--solver
|--__init__.py
|--mysolver.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.