编程新手求助:如何解决Python(v3.2)自定义模块导入不存在的错误?
Python路径未包含模块目录
旧程序可能手动将模块所在目录添加到了sys.path中(比如有import sys; sys.path.append('./modules')这类代码),而新程序没加这段逻辑。可以在新旧程序里分别执行import sys; print(sys.path),对比输出看模块目录是否在路径列表里,若不在,给新程序补上路径添加代码。运行时工作目录不一致
旧程序是从Portable Python IDE中直接打开运行,工作目录默认是模块所在文件夹;但新程序如果是双击运行,工作目录可能变成USB根目录或系统临时目录,导致相对路径找不到模块。可以在程序里加import os; print(os.getcwd())查看当前工作目录,若不对,要么修改运行方式(从IDE打开新程序),要么在新程序里用绝对路径指定模块位置。文件名与模块名重名
检查新程序的文件名,若和自定义模块名完全一样(比如模块叫tools.py,新程序也叫tools.py),Python导入时会优先读取自身脚本,而非目标模块,引发“模块不存在”的错误。修改新程序的文件名即可解决。Python缓存文件干扰
Python 3.2会生成.pyc缓存文件存放在__pycache__文件夹里,若模块重写后缓存未更新,可能导致导入异常。找到模块所在目录下的__pycache__文件夹,删除其中的缓存文件后再尝试导入。文件权限限制
部分电脑可能对USB文件设置了只读权限,若新程序或模块文件被标记为只读,Python无法正常读取模块内容。右键查看文件属性,取消“只读”勾选后重试。
内容的提问来源于stack exchange,提问作者ITlearner

