【发布时间】:2020-03-03 07:55:44
【问题描述】:
我想在我创建的模块中运行一个脚本,但我遇到了导入问题。
我有一个Main.py,一个文件夹Data,里面有Regression.py,另一个文件夹Image,里面有Modifier.py。
像这样:
Main.py
Data/
| __init__.py
| Regression.py
| Image/
| __init__.py
| Modifier.py
主要导入回归和回归导入修饰符。
在 Regression.py 里面我有 import Image
但是我运行 Main.py 我有以下错误:
ModuleNotFoundError: No module named 'Image'
但是如果我使用from Data import Image 运行 main 时没有错误但运行 Regression.py 时出现错误:
ImportError: cannot import name 'Image' from 'Data'
我找到的唯一解决方案是这样做:
if __name__ == "__main__":
import Image
elif __name__ == "Data.Regression":
from Data import Image
此解决方案有效,但如果我创建另一个使用 Data 的模块,则会出现问题。
请问,还有其他解决方案吗?
main.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
【问题讨论】:
-
我发现了问题,首先我需要以父文件夹作为环境变量来执行 Regression.py,以便只有
from Data import Image,其次,重命名 Data.py,因为这会混淆 Regression.py,它试图在 Data.py 中找到 Image 而不是模块 Data。
标签: python