【问题标题】:Python package built with poetry can't find modules用诗歌构建的Python包找不到模块
【发布时间】:2021-05-28 18:55:32
【问题描述】:

我用poetry 使用poetry build 构建了一个包。

这是结构:

├── pyproject.toml
├── ...
└── some_project
    ├── main.py
    ├── options.py
    ├── helpers.py
    └── ...

main.py里面我导入了两个模块

from options import some_method
from helpers import some_other_method

使用 python 在本地运行良好,但是使用 poetry 构建并运行时会抛出此错误:

Traceback (most recent call last):
  File "/usr/local/bin/someproject", line 5, in <module>
    from some_project.main import main
  File "/usr/local/lib/python3.9/site-packages/some_project/main.py", line 4, in <module>
    from options import some_method
ModuleNotFoundError: No module named 'options'

另外值得一提的是,我的 pyproject.toml 中有这个:

packages = [
    { include = "some_project" },
    { include = "some_project/**/*.py" },
]

[tool.poetry.scripts]
someproject = 'some_project.main:main'

有人知道这里出了什么问题吗?还是我配置有问题?

【问题讨论】:

    标签: python pip pypi python-packaging python-poetry


    【解决方案1】:

    你应该在你的 main.py 中写 from some_project.options import some_method

    【讨论】:

    • 即使它们在同一个包中,我是否需要这样做?
    • 是的,你是。它在本地为您工作,因为您从所有包 .py 文件所在的目录运行它。如果您尝试从不同的目录运行,它将无法正常工作
    • 如果你想构建你的包,你应该使用绝对或显式相对导入
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 2022-06-15
    • 2022-08-11
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    • 2019-01-09
    相关资源
    最近更新 更多