即使显式导入Python名称'os'也未定义

Qub*_*028 12 python python-3.x

我有一个名为的模块imtools.py,包含以下功能:

import os 

def get_imlist(path):
    return[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
Run Code Online (Sandbox Code Playgroud)

当我尝试get_imlist使用import imtools和从控制台调用该函数时imtools.get_imlist(path),我收到以下错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "C:\...\PycharmProjects\first\imtools.py", line 5, in get_imlist
NameError: name 'os' is not defined
Run Code Online (Sandbox Code Playgroud)

我是Python的新手,我必须在这里找不到简单的东西,但无法弄清楚这一点.如果我在控制台定义功能,它工作正常.此模块脚本的具体历史记录如下:最初它是在没有import os语句的情况下编写的,然后在看到上面的错误后,import os语句被添加到脚本中并重新保存.在保存之前和之后,使用相同的控制台会话来运行脚本.

Mar*_*som 19

根据小提示,我猜你的代码最初没有该import os行,但你在源代码中纠正了这一点并重新导入了该文件.

问题是Python缓存模块.如果你import不止一次,每次你回到同一个模块 - 它不会被重新阅读.第一次导入时的错误将持续存在.

imtools.py在编辑后重新导入文件,必须使用reload(imtools).