[英]Importing another module from another subdirectory of the current directory's parent directory (python)
我正在嘗試寫游戲。 因此,我有很多不同類型的代碼,並希望將它們排列在有用的層次結構中。
我看過涉及在每個文件夾中放置__init__.py
解決方案,但我仍然有些困惑,盡管不如python解釋器那么多。
現在假設resource1.py
想從physics1.py
或Game
目錄中的任何其他.py
文件導入一個函數,我該怎么做?
我已經嘗試過from bin.physics.physics1 import function
但是顯然不起作用。
謝謝你的幫助。
/Game
launcher.py
/bin
game.py
__init__.py
/physics
__init__.py
physics1.py
physics2.py
/resources
__init__.py
resource1.py
除非您將Game
打包(例如,通過將__init__.py
放入Game
目錄中),否則通常的導入機制是不可能的。 python相對導入系統僅在package中起作用。 它不是通過目錄結構中的任意模塊引用任意模塊的通用系統。 如果將Game打包,則可以from ..bin.physics.physics1 import function
。
編輯:還請注意,相對導入不適用於作為主程序執行的腳本。 如果您嘗試直接運行resource.py
並使用相對導入,則會收到“嘗試在非程序包中進行相對導入”錯誤。 如果您從另一個模塊導入資源,它將起作用。 這是因為相對導入系統基於執行模塊的“名稱”,並且當您直接運行腳本時,其名稱為__main__
而不是通常使用的名稱。 如果確實需要,可以使用__package__
關鍵字解決此問題,但這可能有些棘手。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.