gpt4 book ai didi

Python -- 在同一个包内的模块中导入包

转载 作者:IT老高 更新时间:2023-10-28 22:00:52 25 4
gpt4 key购买 nike

我有一个类似这样的项目结构...

/some_app
build/
README
out.py
some_app/
__init__.py
mod1.py
mod2.py

现在我想将 some_app 包导入到 mod2 中,而不用弄乱 sys.path 诡计。我所做的只是......

# mod2.py
import some_app

现在当我从命令行运行 mod2.py 时

some_app $ python mod2.py

它抛出错误 ImportError: No module named some_app

但是,在 out.py 文件中,当我这样做时

# out.py
import some_app.mod2

然后做

some_app $ python out.py

完美运行。

因此,正在发生的事情是这样的。我在同一个包内的模块中加载一个包,然后将该模块作为 __main__ 文件运行——它不起作用。接下来,我将相同的模块(我作为 __main__ 运行的那个)加载到另一个模块中,然后将另一个模块作为 __main__ 运行——它就可以工作了。

有人可以详细说明这里发生了什么吗?

更新

我知道这样做没有直接的理由——因为我可以直接在 some_app 包中导入任何模块。我尝试这样做的原因是,在 Django 项目中,这就是他们正在做的事情。见 this file for example

在每个模块中,所有非标准导入都以 django. 开头。所以我想知道他们为什么以及如何这样做。

更新 2

相关链接

最佳答案

mod2.pysome_app 的一部分。因此,导入模块是没有意义的,因为您已经在其中了。

您仍然可以import mod1。我假设你需要 some_app/__init__.py 来运行。不确定这是否可能。


编辑:

看起来像 来自 . import some_module 会做你想做的事。

关于Python -- 在同一个包内的模块中导入包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com