我的文件夹结构是:
|-fastapi |-app |-calc.py |-tests |-mytest.py
在mytest.py中,我尝试导入calc.py,如下所示:
mytest.py
calc.py
from app import calc
在mytest.py中,app和calc都是绿色高亮显示的,当我把鼠标悬停在它们上面时,它显示为(module),它似乎被识别,但当我运行它时,我得到了错误,我知道以前有人问过这个问题,但我还没有找到解决方案。
63lcw9qa1#
每个文件夹中需要__init__.py才能将其标记为包。它可以是空文件。有关详细信息,请查看文档。
__init__.py
x759pob22#
我在我的机器中创建了完全相同的文件层次结构,然后在calc.py文件中创建了一个名为hello()的随机函数,这是成功调用应用程序文件夹中函数的代码,
hello()
import sys sys.path.append('../') from app import calc print(calc.hello())
也许我误解了这个问题,所以这里有一个关于IDE在导入模块时的行为的非常详细的答案,如下图所示,我们可以在几乎任何python IDE中导入错误的模块,并且它不会给予错误,直到或除非它是一个预装了扩展的智能IDE,可以像检查其他脚本语言一样进行检查,或者它还不会给出错误,如下图所示,
我们可以看到IDE没有显示任何错误,甚至没有给予任何形式的警告,但是当你运行代码时,你会得到这个错误,这和OP运行代码时得到的错误是一样的,
这可以尝试from app import calc,它会给予你同样的错误,因为它给from imagination import dreams。但是当你添加几行代码的时候
from imagination import dreams
import sys sys.path.append('../')
它开始以类似的方式导入OP试图做的事情,但只使用了额外的代码行,为什么?这是因为他们有他们的文件彼此并行,这可以在他们提到的文件夹中看到,
也许这回答了一个评论提到的问题,我冒昧地假设了一些事情,但或多或少这是正在发生的事情,请纠正这个答案。
envsm3lx3#
您应该检查并确保不存在名为“calc.py”的文件。
3条答案
按热度按时间63lcw9qa1#
每个文件夹中需要
__init__.py
才能将其标记为包。它可以是空文件。有关详细信息,请查看文档。x759pob22#
我在我的机器中创建了完全相同的文件层次结构,然后在
calc.py
文件中创建了一个名为hello()
的随机函数,这是成功调用应用程序文件夹中函数的代码,也许我误解了这个问题,所以这里有一个关于IDE在导入模块时的行为的非常详细的答案,
如下图所示,我们可以在几乎任何python IDE中导入错误的模块,并且它不会给予错误,直到或除非它是一个预装了扩展的智能IDE,可以像检查其他脚本语言一样进行检查,或者它还不会给出错误,如下图所示,
我们可以看到IDE没有显示任何错误,甚至没有给予任何形式的警告,但是当你运行代码时,你会得到这个错误,这和OP运行代码时得到的错误是一样的,
这可以尝试
from app import calc
,它会给予你同样的错误,因为它给from imagination import dreams
。但是当你添加几行代码的时候
它开始以类似的方式导入OP试图做的事情,但只使用了额外的代码行,为什么?这是因为他们有他们的文件彼此并行,这可以在他们提到的文件夹中看到,
也许这回答了一个评论提到的问题,我冒昧地假设了一些事情,但或多或少这是正在发生的事情,请纠正这个答案。
envsm3lx3#
您应该检查并确保不存在名为“calc.py”的文件。