Python使用pkgutil的extend_path查找子目录

发布于 2025-01-11 07:49:45 字数 983 浏览 0 评论 0原文

这是我的文件夹结构

src
├── __init__.py
└── foo
    ├── __init__.py
    └── bar
        ├── __init__.py
        ├── events
        │   ├── __init__.py
        │   ├── execute
        │   │   ├── __init__.py
        │   │   ├── helloworld.py
        │   │   ├── run.py
        └── settings.py

$ cat src/foo/__init__.py 输出...

from pkgutil import extend_path

__path__ = extend_path(__path__, __name__)

src/foo/bar/events/execute/run.py 中,我想做这样的事情

from foo.bar.events.execute.helloworld import HelloWorld

我得到错误

No module named 'foo.bar'

这就是我运行我的应用程序的方式

我知道这不合适,但为了简洁起见,我简化了问题是有原因的

$ python src/foo/bar/events/execute/run

如何实现从 src/foo/bar/events/execute/run.py 导入这种方式?

from foo.bar.events.execute.helloworld import HelloWorld

This is my folder structure

src
├── __init__.py
└── foo
    ├── __init__.py
    └── bar
        ├── __init__.py
        ├── events
        │   ├── __init__.py
        │   ├── execute
        │   │   ├── __init__.py
        │   │   ├── helloworld.py
        │   │   ├── run.py
        └── settings.py

$ cat src/foo/__init__.py outputs...

from pkgutil import extend_path

__path__ = extend_path(__path__, __name__)

in src/foo/bar/events/execute/run.py, I want to do something like this

from foo.bar.events.execute.helloworld import HelloWorld

I get the error

No module named 'foo.bar'

This is how I'm running my app

I understand it's not proper, but there's a reason I just simplified the question for brevity

$ python src/foo/bar/events/execute/run

How do I achieve importing this way from src/foo/bar/events/execute/run.py?

from foo.bar.events.execute.helloworld import HelloWorld

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文