[英]import of Python class from module in package
我的結構看起來像這樣:
project/->
app.py
checker/->
exc.py
anc.py
我的文件很簡單:
# app.py
from checker.exc import ExampleClass
# checker/exc.py:
from anc import AnotherClass
class ExampleClass(AnotherClass):
print('Example')
# checker/anc.py:
class AnotherClass:
print('AAAA')
當我在checker文件夾中運行exc.py時,一切正常,當我使用來自package checker的模塊運行app.py時,一切正常。
但是當我運行使用來自checker.exc的類的app.py時,ex需要anc。 我有一個錯誤ModuleNotFoundError: No module named anc
意識到這是一條膠帶解決方案。
將exc.py
更改為:
try:
from anc import AnotherClass
print('abs import')
except ModuleNotFoundError:
from .anc import AnotherClass
print('rel import')
class ExampleClass(AnotherClass):
print('Example')
這樣,例如,您可以在調試時使用絕對導入,但是在導入時依靠相對導入自行運行app.py
嘗試導入它們的順序應反映預期的使用,首先嘗試使用最可能使用的一種。 如果切換嘗試,則錯誤相同。
由於代碼是從項目文件夾中運行的,因此為了使exc.py
找到anc.py
您需要將exc.py
更改為以下內容:
from .anc import AnotherClass
class ExampleClass(AnotherClass):
print('Example')
正如berna1111的注釋所暗示的那樣,這可能在直接運行exc.py
時引起問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.