我有这个文件夹结构:
--test
first.py
--numpad
second.py
third.py
在first.py中,我有以下代码行:
from numpad import second
在第二个.py文件中,我有这个:
import third
但是在我运行时位于测试文件夹中
python first.py
我收到此错误消息:
ModuleNotFoundError:没有名为“第三”的模块
注意:我也曾尝试将__init__.py
添加到我的numpad文件夹中,但没有成功
答案 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
这解决了错误。