使用Poetry运行Python脚本遇报错:执行poetry install仍无法启动服务
解决Poetry脚本启动报错问题
问题根源
你在pyproject.toml的[tool.poetry.scripts]里写的是shell命令python src/main.py,但Poetry的脚本配置不支持直接执行shell命令,它要求指向Python模块中的可调用函数。Poetry尝试将你写的内容按模块:函数的格式解析,拆分时只得到1个部分,因此抛出not enough values to unpack错误,同时脚本未正确安装导致警告。
解决步骤
1. 配置Poetry识别src源码目录
在pyproject.toml的[tool.poetry]区块添加一行,让Poetry知道src是你的源码根目录:
[tool.poetry] name = "你的项目名" version = "0.1.0" description = "" authors = ["你的名字 <邮箱>"] src = true # 添加这一行
2. 给main.py添加入口函数
修改src/main.py,把启动逻辑封装成一个可调用的函数(比如main()),并保留直接运行的入口:
# src/main.py def main(): # 把你原来的服务启动代码放在这里 # 示例: print("服务启动成功") # 保留直接运行脚本的能力 if __name__ == "__main__": main()
3. 修正scripts配置
更新pyproject.toml的脚本配置,指向main.py里的main函数:
[tool.poetry.scripts] start = "main:main" # 格式为「模块名:函数名」,因src是源码根,模块名就是main(对应src/main.py)
4. 重新安装并运行
执行以下命令完成安装并启动服务:
poetry install poetry run start
临时替代方案(不推荐长期使用)
如果不想修改代码,也可以直接通过Poetry运行Python脚本:
poetry run python src/main.py
内容的提问来源于stack exchange,提问作者John Philip
相关产品推荐
相关产品推荐

