python 中的相对导入:使用 -m 标志不起作用,除非向上移动父目录

发布于 2025-01-09 07:47:47 字数 922 浏览 0 评论 0原文

我已经复制了这个问题中的场景:

Python错误-ImportError:尝试在没有已知父包的情况下进行相对导入

但是,答案对我来说不起作用。我在 VSCode 中运行 python3 (3.7.9),具有以下文件结构:

project/
├─ utils/
│  ├─ module.py
├─ server/
│  ├─ main.py

当在目录 all_projects/project/server/ 中时:

运行 python3 main.py 我得到ImportError:尝试在没有已知父包的情况下进行相对导入

运行python3 -m mainImportError:尝试在没有已知父包的情况下进行相对导入

-

当处于目录all_projects/project/

运行python3 -m server.mainValueError:尝试相对导入超出顶级包

-

仅当在目录中时all_projects/

运行python3 -m project.server.main:按预期工作。

这到底是怎么回事?为什么 python3 -m server.mainproject 目录中不起作用?

I have replicated the scenario in this exact question:

Python error - ImportError: attempted relative import with no known parent package

However, the answer for me does not work. I'm running python3 (3.7.9) in VSCode with the following file structure:

project/
├─ utils/
│  ├─ module.py
├─ server/
│  ├─ main.py

When in the directory all_projects/project/server/:

Running python3 main.py I get ImportError: attempted relative import with no known parent package

Running python3 -m main: ImportError: attempted relative import with no known parent package

-

When in the directory all_projects/project/:

Running python3 -m server.main: ValueError: attempted relative import beyond top-level package

-

ONLY when in the directory all_projects/:

Running python3 -m project.server.main: works as expected.

What the hell is going on here? Why does python3 -m server.main not work in the project directory?

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧伤慢歌 2025-01-16 07:47:47

它可以是任何东西!包括权限!
但你应该使用 virtualenv

it could be anything ! including permissions!
but you should use virtualenv

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文