python 中的相对导入:使用 -m 标志不起作用,除非向上移动父目录
我已经复制了这个问题中的场景:
Python错误-ImportError:尝试在没有已知父包的情况下进行相对导入
但是,答案对我来说不起作用。我在 VSCode 中运行 python3 (3.7.9),具有以下文件结构:
project/
├─ utils/
│ ├─ module.py
├─ server/
│ ├─ main.py
当在目录 all_projects/project/server/
中时:
运行 python3 main.py
我得到ImportError:尝试在没有已知父包的情况下进行相对导入
运行python3 -m main
:ImportError:尝试在没有已知父包的情况下进行相对导入
-
当处于目录all_projects/project/
:
运行python3 -m server.main
:ValueError:尝试相对导入超出顶级包
-
仅当在目录中时all_projects/
:
运行python3 -m project.server.main
:按预期工作。
这到底是怎么回事?为什么 python3 -m server.main
在 project
目录中不起作用?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它可以是任何东西!包括权限!
但你应该使用 virtualenv
it could be anything ! including permissions!
but you should use virtualenv