我有一个名为imtools.py
的模块,其中包含以下功能:
import os
def get_imlist(path):
return[os.path.join(path,f) for f in os.listdir(path) if f.endswith('.jpg')]
当我尝试使用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
我是Python的新手,我必须在这里遗漏一些简单的东西,但无法解决这个问题。如果我在控制台定义功能,它工作正常。此模块脚本的具体历史记录如下:最初它是在没有import os
语句的情况下编写的,然后在看到上面的错误后,import os
语句被添加到脚本中并重新保存。在保存之前和之后,使用相同的控制台会话来运行脚本。
答案 0 :(得分:18)
根据小提示,我猜测您的代码原本没有import os
行,但您在源代码中对此进行了更正并重新导入了该文件。< / p>
问题在于Python缓存模块。如果你import
不止一次,每次你回到同一个模块 - 它都不会被重新阅读。第一次导入时的错误将持续存在。
要在编辑后重新导入imtools.py
文件,您必须使用reload(imtools)
。
答案 1 :(得分:0)
同样的问题在于我,我也试图按照Jan Erik Solem编写的“使用Python编程计算机视觉”一书“[http://programmingcomputervision.com/]。我试图在互联网上探索问题,但我没有发现任何问题有价值的解决方案,但我已经通过自己的努力解决了这个问题。
首先,您只需将'imtools.py'放入Python安装位置的父文件夹中,如C:\ Python,然后将文件放入该目标并输入以下命令:
from PIL import Image
from numpy import *
from imtools import *
您只需从代码中删除imtools,而不是使用imtools.get_imlist()键入代码,而不是:
get_imlist()
这可以解决您的问题,因为我通过我使用的相同技术找到了解决方案。