尝试从另一个文件夹导入时找不到模块错误问题

时间:2019-06-05 08:38:42

标签: python python-3.6

我有这个文件夹结构:

--test
    first.py
    --numpad
          second.py
          third.py

在first.py中,我有以下代码行:

from numpad import second

在第二个.py文件中,我有这个:

import third

但是在我运行时位于测试文件夹中

python first.py

我收到此错误消息:

ModuleNotFoundError:没有名为“第三”的模块

注意:我也曾尝试将__init__.py添加到我的numpad文件夹中,但没有成功

3 个答案:

答案 0 :(得分:1)

由于python解释器是在test中启动的,因此它是查找导入的地方。如果您对详细信息感兴趣,可以通过the docs了解python搜索导入的行为。

要解决您的问题,有很多解决方法,最好的方法取决于您计划如何使用代码。如果您打算编写一个库,那么package it可能有意义,这将使您能够访问可以使用的全局命名空间。

但是,如果您只是希望它现在就可以工作,并且永远都不会从同一位置(即您的test文件夹)运行解释器,则将third文件定义为本地文件应该这样做:

second.py

from . import third

third.py

print('third here, not an import error')

这对我有用:

~/test$ tree . 
.
├── first.py
└── numpad
    ├── second.py
    └── third.py
~/test$ python3.6 first.py
third here, not an import error

答案 1 :(得分:0)

对此我可能是错的,但是我很确定您必须设置环境变量才能在该特定文件夹中查找。这不仅仅是将您的自制模块添加到默认模块文件夹中,而是更加麻烦。

答案 2 :(得分:0)

正如@Arne在评论中指出的那样,这完全取决于解释器运行的路径。解决方案是在导入文件中添加相对于测试文件夹的路径。

在您的second.py中,使用数字键盘导入第三个。

from numpad import third

这解决了错误。