主脚本调用同目录下lidar_source_code.py函数遇ModuleNotFoundError求助
解决Python跨文件导入函数的ModuleNotFoundError问题
核心原因
Python导入模块时,只会在默认搜索路径内查找文件,默认路径包含:
- 脚本当前运行目录
- Python标准库目录
- 第三方库安装目录
如果lidar_source_code.py不在这些路径中,就会触发找不到模块的错误。
具体解决方法
方法1:将文件放在同一目录
直接把lidar_source_code.py和主脚本py_lidar_depressions.py放在同一个文件夹下,你原本的导入语句from lidar_source_code import *就能正常生效。方法2:手动添加文件目录到搜索路径
若两个文件不在同一目录,在主脚本开头添加以下代码,将lidar_source_code.py所在的文件夹路径加入Python搜索路径:import sys sys.path.append("/实际文件夹路径") from lidar_source_code import *注意把
/实际文件夹路径替换成真实路径(比如Windows系统是C:\xxx\目标文件夹,Linux/macOS是/home/user/目标文件夹)。方法3:将目标文件夹设为Python包(适合长期项目)
- 在
lidar_source_code.py所在的文件夹里创建空文件__init__.py(文件名前后各两个下划线),让Python识别该文件夹为一个包。 - 假设目录结构如下:
主脚本中可这样导入:项目文件夹/ ├─ py_lidar_depressions.py └─ lidar工具包/ ├─ __init__.py └─ lidar_source_code.py
如果包不在默认搜索路径,同样需要先用from lidar工具包.lidar_source_code import *sys.path.append添加包所在的上级目录。
- 在
对你疑问的解答
是的,当目标文件不在Python默认搜索路径里时,必须指定它的位置(要么放在同一目录,要么手动添加路径,要么做成包)。很多教程默认假设两个文件在同一目录,所以省略了这一步说明。
内容的提问来源于stack exchange,提问作者Max Duso
相关产品推荐
相关产品推荐

