首页 > 解决方案 > ModuleNotFoundError 当它实际上在路径中时

问题描述

我尝试通过控制面板('c:\projects\parser')将其直接添加到路径中,并在尝试导入之前将其附加。它适用于子文件夹,而不是父母。

.
└── parser
    └── tests
        ├── __init__.py
        └── utils
            ├── __init__.py
            └── rebuild_parsers.py

这是我尝试过的。

C:\>python
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append('c:\\projects\\parser')
>>> from tests.utils.rebuild_parsers import build_lexer_parser
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ModuleNotFoundError: No module named 'tests.utils'

>>> sys.path.append('c:\\projects\\parser\\tests')
>>> from utils.rebuild_parsers import build_lexer_parser

我真的不明白为什么它不起作用。两个文件夹(tests 和 utils)都有一个__init__.py文件

当然,如果我从解析器文件夹运行它,它就可以工作,我只是想了解为什么它没有将它作为一个模块。

C:\Projects\parser>python
Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from tests.utils.rebuild_parsers import build_lexer_parser
>>>

标签: pythonpython-3.xmodule

解决方案


尝试了您给出的相同树结构。它似乎对我有用。

使用 Mac 和 python3.8.7。

这是树:

% tree parser
parser
└── tests
    ├── __init.py__
    └── utils
        ├── __init.py__
        └── rebuild_parsers.py

这是我的 rebuild_parsers.py 包含的内容:


# rebuild_parsers.py
def exmaple():
        print("Hello")

这是我在终端中编写的代码:

>>> import os, sys
>>> sys.path.append(os.path.join(os.getcwd(), "parser"))
>>> from tests.utils.rebuild_parsers import exmaple
>>> example()

它似乎奏效了。你能检查一下吗。


推荐阅读