嘗試從同一目錄中的另一個檔案匯入函數時,使用from .mymodule import myfunction 或from mymodule import myfunction 可以導致錯誤。原因在於包含要匯入的函數的模組是否位於套件內。
當模組位於包內時,相對導入起作用。若要建立包,包含模組的目錄中必須存在 __init__.py 檔案。然而,確保模組有時可以作為腳本運行也很重要。
包含多個模組和主腳本的套件的常見佈局如下如下:
mypackage/
內mymodule.py:
# Exported function def as_int(a): return int(a) # Test function for module def _test(): assert as_int('1') == 1 if __name__ == '__main__': _test()內mymodule.py:
# Import exported function from the mymodule from .mymodule import as_int # Exported function def add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add('1', '1') == 2 if __name__ == '__main__': _test()
# Import exported function from myothermodule from mypackage.myothermodule import add def main(): print(add('1', '1')) if __name__ == '__main__': main()在main.py 中:
執行程式碼
替代方法
以上是將模組作為腳本運行時如何處理 Python 套件中的相對導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!