Python包的相對導入時出現問題解決
阿新 • • 發佈:2018-03-16
err 出現 解釋 pack orm ini value tro 條件
資料參考: https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html
在python導入包,如下:
from .units import *
經常出現錯誤:
SystemError: Parent module ‘‘ not loaded, cannot perform relative import
或
ValueError: attempted relative import beyond top-level package
其原因在相對導入時,package所對應的文件夾必須正確的被python解釋器視作package,而不是普通文件夾。否則無法利用package之間的嵌套關系,從而無法實現python中包的相對導入。
文件夾被python解釋器視作package需要滿足兩個條件:
1、文件夾中必須有__init__.py文件,該文件可以為空,但必須存在該文件。
2、不能作為頂層模塊來執行該文件夾中的py文件(即不能作為主函數的入口)。
對於第一個條件問題直接新建一個空白__init__.py文件即可,對於第二個條件問題,可以新建一個包,將需要直接執行的文件及關聯文件拖入包中,比如新建一個包package,拖入後,問題導入代碼變為:
from package.units import *
這時可以正確導入。
Python包的相對導入時出現問題解決