当前目录子文件夹中的Python模块如何在终端以-m模式运行
核心原因
python3 -m参数要求传入点分隔的模块名称,而非文件路径,你之前传入文件路径的写法不符合语法要求,才会触发模块找不到的报错。
最优解决方案(无需修改任何全局环境变量)
你的工作目录已经是main,Python运行时默认会把当前工作目录加入模块搜索路径,只要按如下操作即可:
- 在
tester目录下新建空的__init__.py文件(Python 3.3及以上版本可选,添加后兼容性更好,可将tester识别为标准Python包) - 直接执行如下命令:
python3 -m tester.test_module
即可正常运行,完全不会产生PYTHONPATH冗余问题。
临时指定搜索路径方案(适合包不在当前工作目录下的场景)
如果你确实需要运行不在当前工作目录下的模块,又不想污染全局环境变量,可以单次命令临时指定PYTHONPATH,仅对当前运行生效:
PYTHONPATH="/path/to/parent_dir_of_package" python3 -m 包名.模块名
对应你的场景写法为:
PYTHONPATH="/path/to/main" python3 -m tester.test_module
注意事项
-m参数后永远不要带.py后缀,也不要传入任何文件路径写法,必须使用点分隔的模块层级命名- 优先用标准的包结构管理代码,不要随意修改全局PYTHONPATH,避免出现模块重名冲突等问题
内容的提问来源于stack exchange,提问作者aru_bdd
相关产品推荐
相关产品推荐

