Gep*_*pos 5 python python-poetry
我正在使用 Poetry 构建一些命名空间包。每个包的目录结构都是相同的:
package_bbb
pyproject.toml
aaa
bbb
myservice.py
__init__.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
使用 Poetry 我可以构建一个轮子,安装它并使用该包:
package_bbb
pyproject.toml
aaa
bbb
myservice.py
__init__.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
当我开始构建第二个包时,我的问题发生了,它需要第一个包作为依赖项。
结构保持不变:
package_ccc
pyproject.toml
aaa
ccc
mydata.py
__init__.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
在诗歌中,我将第一个添加为依赖项:
from aaa.bbb import myservice
Run Code Online (Sandbox Code Playgroud)
该软件包将(来自实习生存储库)安装在生成的 virtualenv 中并添加到 pyproject.toml 中。
第二个包生成的轮子也是完美的。第一个包将由 pip 作为依赖项安装。
问题出在开发过程中:如果我尝试(例如在 mydata.py 内部)从第一个包导入某些内容:
package_ccc
pyproject.toml
aaa
ccc
mydata.py
__init__.py
__init__.py
Run Code Online (Sandbox Code Playgroud)
我有一个模块未找到。我认为发生这种情况是因为我有 2 个 aaa 命名空间:一个在 virtualenv 中,一个在项目根目录中。第二个优先,没有aaa.bbb。
我是否遗漏了包结构中的某些内容,或者有办法避免这种“命名空间冲突”?
非常感谢你的帮助!
您需要__init__.py从aaa两个包的文件夹中删除 。否则aaa将被检测为普通包而不是命名空间包。有关更多详细信息,请参阅https://www.python.org/dev/peps/pep-0420/#specification 。
| 归档时间: |
|
| 查看次数: |
5383 次 |
| 最近记录: |