簡體   English   中英

從當前目錄的父目錄的另一個子目錄導入另一個模塊(python)

[英]Importing another module from another subdirectory of the current directory's parent directory (python)

我正在嘗試寫游戲。 因此,我有很多不同類型的代碼,並希望將它們排列在有用的層次結構中。

我看過涉及在每個文件夾中放置__init__.py解決方案,但我仍然有些困惑,盡管不如python解釋器那么多。

現在假設resource1.py想從physics1.pyGame目錄中的任何其他.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM