【问题标题】:python module not found error no module namedpython模块未找到错误没有模块命名
【发布时间】:2020-08-11 03:54:38
【问题描述】:

我有几个单独的 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

这段代码在我想使用command line作为“python samples1.py”启动py文件的地方,并引发如下错误

Traceback(最近一次调用最后一次):文件“samples1.py”,第 1 行,在 from tez.library.image_crop import ImageCrop ModuleNotFoundError: No module named 'tez'

文件夹结构:

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

Python 版本:3.8
点数:20.0.2
Windows 10 专业版 1909

【问题讨论】:

  • 您是安装了tez 包,还是将其添加到PYTHONPATH
  • tez 是文件夹名称。不是一个包。我在 q 中添加了文件夹结构。
  • 通过尝试导入 from tez...,您是在告诉 Python tez 是一个包。
  • hm.ok 那么如何从不同的文件夹导入 python 文件?

标签: python python-3.x module


【解决方案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”应该在包“with-in”中进行本地导入。

处理包的使用可能很棘手。

【讨论】:

  • no tez 是其中一些 python 文件的文件夹名称。另一个名为 src 的文件夹是我的应用程序 py 文件要使用命令提示符运行的主文件夹
  • 那你为什么会有一行“import tez....”?这一行意味着 tez 是一个包,python 内核将转到该包并查找 init 文件(如果可以找到)。
【解决方案2】:

sample.py 看不到上面的 src 文件夹,但你可以告诉 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"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2021-04-07
    • 2010-09-25
    相关资源
    最近更新 更多