在python中导入模块时出现“ModuleNotFoundError”错误

syqv5f0l  于 2023-05-02  发布在  Python
关注(0)|答案(1)|浏览(240)

我在python中运行脚本时得到了"ModuleNotFoundError"。下面是目录结构:

housekeeping  ---> root folder
      -> src
           ->core1
                ->abc.py  ----> this script has class "xyz"
                -> __init__.py
              
           ->core2
               -> def.py
               -> __init__.py

def.py:

from core1.abc import xyz
print("name")

当我在www.example中调用def.py www.example.com ,用于创建docker镜像,如下所示:

**/housekeeping/venv/bin/python3.7 /housekeeping/src/core2/def.py**

它给*module not found error*folder1即使我已经包括__init__.py文件。
我用src/folder1.abc import xyz替换了folder1.abc import xyz,并为src文件夹添加了__init__.py,然后也得到了同样的错误。

z9smfwbn

z9smfwbn1#

您需要将src目录的路径添加到sys.path,以便def能够“看到”core1src的路径可以动态添加,或者src中的脚本可以导入并运行def。已执行脚本的当前目录始终添加到路径中。
尝试以下代码作为示例。尝试运行www.example www.example.com , www.example.com 和def.py。我已经包括了他们在我的机器下面的输出。

hchapman@ONI-J77SRN2 MINGW64 ~/TT/src
$ ls -R
.:
core1/  core2/  src.py

./core1:
core1.py

./core2:
core2.py  def.py

hchapman@ONI-J77SRN2 MINGW64 ~/TT/src
$ head src.py core1/core1.py core2/core2.py core2/def.py
==> src.py <==
print('src')

import sys
print(sys.path[0])

import core2.core2

==> core1/core1.py <==
print('core1')

==> core2/core2.py <==
print('core2')

import sys
print(sys.path[0])

import core1.core1

==> core2/def.py <==
print('def')

if __name__ == "__main__":
    from os import path
    import sys
    sys.path.append(path.abspath(path.join(path.dirname(__file__), path.pardir)))

    import core2

hchapman@ONI-J77SRN2 MINGW64 ~/TT/src
$ python src.py
src
C:\Users\hchapman\TT\src
core2
C:\Users\hchapman\TT\src
core1

hchapman@ONI-J77SRN2 MINGW64 ~/TT/src
$ python core2/core2.py
core2
C:\Users\hchapman\TT\src\core2
Traceback (most recent call last):
  File "C:\Users\hchapman\TT\src\core2\core2.py", line 6, in <module>
    import core1.core1
ModuleNotFoundError: No module named 'core1'

hchapman@ONI-J77SRN2 MINGW64 ~/TT/src
$ python core2/def.py
def
core2
C:\Users\hchapman\TT\src\core2
core1

相关问题