[英]Import Error : attempted relative import with no known parent package
你能告訴我如何正確地進行相對導入嗎?
項目結構:
p1
|- x1
| |- __init__.py
| |- x1_module1.py
|- x2
|- __init__.py
|- x2_module1.py
在 x2_modules.py 中
try:
from p1.x1.x1_module import temp_func
except Exception as e:
print('Failed "from p1.x1.x1_module import temp_func"')
print(e)
try:
from .x1.x1_module import temp_func
except Exception as e:
print('Failed "from .x1.x1_module import temp_func"')
print(e)
try:
from ..x1.x1_module import temp_func
except Exception as e:
print('Failed "from ..x1.x1_module import temp_func"')
print(e)
Output:
Failed "from p1.x1.x1_module import temp_func"
No module named 'p1'
Failed "from .x1.x1_module import temp_func"
attempted relative import with no known parent package
Failed "from ..x1.x1_module import temp_func"
attempted relative import with no known parent package
[Finished in 0.2s]
項目結構:
p1
|- x1
| |- __init__.py
| |- x1_module1.py
|- x2
|- __init__.py
|- x2_module1.py
編輯:代碼不遵循 PEP-8 且難以閱讀。 因此,我對其進行了優化。
請試試這段代碼:
import sys
import os
PACKAGE_PARENT = '..'
SCRIPT_DIR = os.path.dirname(
os.path.realpath(
os.path.join(
os.getcwd(),
os.path.expanduser(__file__)
)
)
)
sys.path.append(
os.path.normpath(
os.path.join(
SCRIPT_DIR,
PACKAGE_PARENT
)
)
)
from x1.x1_module import tempfunction
有用
問候伊沙恩·卡普爾
如果您的 python 腳本是從 p1 目錄調用的,這應該有效:
from x1.x1_module1 import temp_func
要查看 python 在何處搜索您的模塊的列表,請使用以下命令:
import sys
print(sys.path)
sys.path 的第一個條目應該是你的腳本運行的目錄,我假設是 p1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.