使用Python -m运行脚本时遇ImportError: No module named my_package求助
问题原因与解决方法
核心问题:python -m的用法错误
你使用python -m /home/user/PYTHON_DEV/ROSBag_Automation/ProjectFolder/main的方式不符合Python模块运行规则:-m参数后必须跟点分隔的模块名(如ProjectFolder.main),而非文件绝对路径。这种错误用法会导致Python无法正确解析项目的包结构,进而触发ImportError。
另外,直接运行python main.py能正常工作的原因是:Python会自动将脚本所在目录(ProjectFolder)添加到sys.path,此时my_package就在该目录下,自然能被找到——你代码中手动添加父目录到sys.path的操作其实是多余的。
解决方法
方法1:使用正确的python -m命令
- 切换到
ProjectFolder的父目录:cd /home/user/PYTHON_DEV/ROSBag_Automation - 在激活的虚拟环境中运行:
python -m ProjectFolder.main
方法2:简化main.py代码(可选)
既然直接运行脚本时Python会自动处理路径,你可以删除main.py中手动添加路径的代码,简化后的代码如下:
from my_package import my_module as test test.doSomething() print("done")
修改后,无论是直接运行python main.py,还是用方法1的-m命令,都能正常执行。
内容的提问来源于stack exchange,提问作者GordnBenit
相关产品推荐
相关产品推荐

