PyCharm可运行但命令行报ModuleNotFoundError(Poetry项目)
解决ModuleNotFoundError: No module named 'src'的问题
问题根源
你直接用python3 src/scripts/s.py执行脚本时,Python会把脚本所在的src/scripts目录加到模块搜索路径sys.path里,而不是项目根目录。这就导致Python找不到src这个顶层模块——毕竟src在项目根目录下,不在当前的搜索路径里。而PyCharm会自动把项目根目录加入sys.path,所以能正常运行。
下面是几种可行的解决方法:
方法1:用Poetry的
run命令执行(最简单)
Poetry会自动处理环境和模块路径,直接在项目根目录执行:poetry run python src/scripts/s.py方法2:改用相对导入+模块方式运行
把s.py里的绝对导入改成相对导入(因为s.py和helper同属src下的子目录):# s.py 中的导入语句修改为 from ..helper.h import add然后用模块方式运行脚本(这样Python会把项目根目录加入搜索路径):
python3 -m src.scripts.s方法3:手动添加项目根目录到搜索路径(应急用)
在s.py的最顶部加一段代码,手动把项目根目录加入sys.path:import sys from pathlib import Path # 获取项目根目录(当前脚本在src/scripts,根目录是它的上两级目录) project_root = Path(__file__).parent.parent.parent sys.path.append(str(project_root)) # 再执行原来的导入 from src.helper.h import add方法4:配置Poetry可执行命令(长期项目推荐)
先给s.py加一个入口函数main():# s.py from src.helper.h import add def main(): print(add(1, 2)) if __name__ == "__main__": main()然后在
pyproject.toml里添加脚本配置:[tool.poetry.scripts] run-s = "src.scripts.s:main"执行
poetry install后,就能直接用命令运行:poetry run run-s
内容的提问来源于stack exchange,提问作者techjourneyman
相关产品推荐
相关产品推荐

