找不到python模块错误没有命名模块

时间:2020-04-27 14:43:59

标签: python python-3.x module

我有一些单独的pythone文件,我正在用它们来导入另一个py文件。尝试导入它们的模块位于我的代码示例所在的单独文件夹中

from tez.library.image_crop import ImageCrop
from tez.library.image_process import ImageProcess
from tez.library.image_features import ImageFeatures
from tez.const.application_const import ApplicationConst
from tez.library.file_operation import FileOperation

此代码是在我想使用通用行作为“ python samples1.py”启动py文件的地方,并引发了如下错误

回溯(最近一次通话最后一次):文件“ samples1.py”,位于第1行 从tez.library.image_crop导入ImageCrop ModuleNotFoundError:没有名为“ tez”的模块

文件夹结构:

.tez
-图书馆
---- image_crop.py
---- image_process.py
---- image_features.py
--src
---- samples1.py

Python版本:3.8
点:20.0.2
Windows 10 Pro 1909

2 个答案:

答案 0 :(得分:1)

如果您要构建一个名为tez的软件包(并且由于您尝试导入它,我想您就是)。然后,带有tez的所有内容都需要在本地引用自己。 tez软件包中的所有文件都必须使用“。”相互引用。和“ ..”进口。

在samples1.py中:

from ..library.image_crop import <something>

编辑:

这听起来像是您误解了python如何导入事物。当您在python脚本中运行“ import X”时,python将在sys.path下查找名为X的软件包。如果要查找自定义包,则可以在脚本顶部附加到sys.path。

import sys
sys.path.append(<directory of tez>)

import tez

但是,强烈建议您不要从软件包名称目录结构下的文件中导入。如果“ examples”是使用软件包“ tez”的示例目录,则“ examples”应位于软件包“ tez”之外。如果“ examples”在软件包“ tez”内部,则“ examples”应在软件包“内部”进行本地导入。

了解包装使用情况可能很棘手。

答案 1 :(得分:1)

sample.pysrc文件夹的上方看不到,但是您可以告诉Python这样做。:

import sys
import os
tez = os.path.dirname(os.path.dirname(__file__))
# __file__ is path of our file (samples.py)
# dirname of __file__ is "src" in our state
# dirname of "src" is "tez" in our state

sys.path.append(tez) # append tez to sys.path, python will look at here when you try import something

import library.image_crop # dont write "tez"

但是我认为这不是一个很好的设计。