我想在我创建的模块内运行一个脚本,但我遇到了导入问题。
我有一个Main.py
,一个里面有Regression.py
的文件夹Data和另一个里面是Modifier.py
的文件夹Image。
像这样:
Main.py
Data/
| __init__.py
| Regression.py
| Image/
| __init__.py
| Modifier.py
主导入回归和回归导入修饰符。
内部遗憾.py我有import Image
但是去了我运行Main.py我有以下错误:
ModuleNotFoundError: No module named 'Image'
但是,如果我在运行main时使用from Data import Image
没有错误,但在运行Regission.py时出现错误:
ImportError: cannot import name 'Image' from 'Data'
我找到的唯一解决方案是这样做:
if __name__ == "__main__":
import Image
elif __name__ == "Data.Regression":
from Data import Image
这个解决方案是有效的,但如果我创建另一个使用Data的模块,就会有问题。
拜托,还有其他解决方案吗?
主要.py
import Data
if __name__ == "__main__":
data = Data.Regression.LoadTest()
print("End")
数据/__init__.py
__all__ = ["Classification", "Regression"]
from . import Classification
from . import Regression
数据/回归.py
if __name__ == "__main__":
import Image
elif __name__ == "Data.Regression":
from Data import Image
import numpy as np
def LoadSet():
#load img
data = Image.Modifier.Modify(img)
# other part of code
return result
if __name__ == "__main__":
test = Regression.LoadSet()
# test code of Regression
print("End")
数据/图像/__init__.py
__all__ = ["Modifier"]
from . import Modifier
数据/图像/修改器.py
import numpy as np
def Modify(img):
# modify my image
return img
使用相对导入:
from . import Image
或键入要导入的模块的完整路径,相对于__main__
:
import Data.Image
请遵守惯例,用小写字母命名您的模块。