Python 尝试从其他文件夹导入时出现模块未找到错误问题

Python 尝试从其他文件夹导入时出现模块未找到错误问题,python,python-3.6,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:没有名为“third”的模块 注意:我也尝试过将\uu

我有以下文件夹结构:

--test
    first.py
    --numpad
          second.py
          third.py
在first.py中,我有一行代码:

from numpad import second
在第二个.py文件中,我有:

import third
但是当我运行时,在测试文件夹中

python first.py
我收到以下错误消息:

ModuleNotFoundError:没有名为“third”的模块


注意:我也尝试过将
\uuu init\uuuuuy.py
添加到我的numpad文件夹中,但它不起作用

我可能在这一点上错了,但我非常确定您必须设置环境变量以查看该特定文件夹。这比将自制模块添加到默认模块文件夹更麻烦

由于python解释器是在
test
中启动的,因此它会在这里查找导入。如果您对细节感兴趣,可以通过了解pythons的导入搜索行为

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

但是,如果您只是想让解释器立即工作,并且只在同一个位置(即您的
test
文件夹)运行解释器,那么将
third
文件定义为本地文件就可以了:

second.py

来自。进口第三
third.py

print('third here,not import error')
这对我很有用:

~/test$树。
.
├── 第一,派克
└── 小键盘
├── 二等兵
└── 第三,派克
~/test$python3.6 first.py
第三,这里不是导入错误

你真的想在second.py中导入second,还是应该是
导入third
?@arne是的,你是对的,我编辑了,谢谢。另外,导入可能不起作用,因为python解释器不知道
numpad
应该是python模块。你可以通过在
numpad
文件夹中添加一个空的
\uu init\uuuuuuuuuuuy.py
文件来判断它是一个。@arne我这样做了,但没有工作,我在numpad文件夹中添加了
\uu init\uuuuuuuuuuuy
,但没有工作work@mhmighani没错,我忽略了python3.6标记,
\uuuuu init\uuuuu.py
就是python2。接下来要尝试的是为
第三个
执行显式本地导入,即从。导入第三个。由于解释器在
third
不可见的级别上运行,这可能是必需的当前文件夹通常是python查找模块的路径。您可以使用
print(sys.path)
Hmmm来验证这一点。我从来都不知道!不管出于什么原因,我的没有。可能是我的一个同事在搞path变量。很讽刺的哈哈