配置Poetry scripts遇ModuleOrPackageNotFound错误:找不到my-package
解决Poetry脚本配置的ModuleOrPackageNotFound问题
检查项目结构是否符合Poetry规范
Poetry要求项目遵循标准Python包结构,你的根目录下必须存在与my-package同名的包文件夹(需包含__init__.py文件),示例结构如下:
my-project/ ├── pyproject.toml ├── my_package/ # 注意:Poetry会自动将包名中的连字符替换为下划线 │ ├── __init__.py │ └── scripts.py # 存放start函数的脚本文件 └── ...
调整scripts配置路径
根据脚本文件的实际位置修改配置:
- 若
scripts.py在包内(如my_package/scripts.py),修改pyproject.toml的配置为:
[tool.poetry.scripts] start = "my_package.scripts:start"
- 若
scripts.py在项目根目录,需先在pyproject.toml中添加包外模块的识别配置,或者直接将脚本移入包内(更符合规范)。
确保Poetry正确识别包
- 确认
pyproject.toml的name字段为my-package:
[tool.poetry] name = "my-package" version = "0.1.0" description = "" authors = ["Your Name <your.email@example.com>"]
- 执行
poetry install重新安装依赖,让Poetry更新包的导入映射。
验证脚本可用性
执行poetry run start测试脚本,若仍报错,用以下命令直接排查模块导入问题:
poetry run python -c "from my_package.scripts import start; start()"
若该命令报错,说明模块路径存在问题,需重新调整项目结构或配置。
内容的提问来源于stack exchange,提问作者Zhu Weiji
相关产品推荐
相关产品推荐

