![](/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.