Python:导入包含包

发布于 2024-07-11 20:19:02 字数 208 浏览 11 评论 0原文

在驻留在包内的模块中,我需要使用该包的 __init__.py 中定义的函数。 我如何在驻留在包内的模块中导入包,以便我可以使用该功能?

在模块内部导入 __init__ 不会导入包,而是导入一个名为 __init__ 的模块,导致两个具有不同名称的副本......

有没有一种Pythonic的方法来做这个?

In a module residing inside a package, i have the need to use a function defined within the __init__.py of that package. how can i import the package within the module that resides within the package, so i can use that function?

Importing __init__ inside the module will not import the package, but instead a module named __init__, leading to two copies of things with different names...

Is there a pythonic way to do this?

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

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

发布评论

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

评论(5

如痴如狂 2024-07-18 20:19:02

此外,从 Python 2.5 开始,可以进行相对导入。 例如:

from . import foo

引用 http://docs.python.org/tutorial/modules .html#intra-package-references


从Python 2.5开始,除了上述隐式相对导入之外,您还可以使用 import 语句的 from module import name 形式编写显式相对导入。 这些显式相对导入使用前导点来指示相对导入中涉及的当前包和父包。 例如,从周围的模块中,您可以使用:

from . import echo
from .. import formats
from ..filters import equalizer

Also, starting in Python 2.5, relative imports are possible. e.g.:

from . import foo

Quoting from http://docs.python.org/tutorial/modules.html#intra-package-references:


Starting with Python 2.5, in addition to the implicit relative imports described above, you can write explicit relative imports with the from module import name form of import statement. These explicit relative imports use leading dots to indicate the current and parent packages involved in the relative import. From the surrounding module for example, you might use:

from . import echo
from .. import formats
from ..filters import equalizer
往事风中埋 2024-07-18 20:19:02

这并不能完全回答您的问题,但我建议您将该函数移到 __init__.py 文件之外,并移到该包内的另一个模块中。 然后,您可以轻松将该函数导入到其他模块中。 如果需要,您可以在 __init__.py 文件中包含一个 import 语句,该语句也将导入该函数(当导入包时)。

This doesn't exactly answer your question, but I'm going to suggest that you move the function outside of the __init__.py file, and into another module inside that package. You can then easily import that function into your other module. If you want, you can have an import statement in the __init__.py file that will import that function (when the package is imported) as well.

好听的两个字的网名 2024-07-18 20:19:02

如果包名为 testmod 并且您的初始化文件是 testmod/__init__.py 并且包中的模块是 submod.py 那么在 submod.py 文件中,您应该能够说 import testmod 并使用 testmod 中定义的任何您想要的内容。

If the package is named testmod and your init file is therefore testmod/__init__.py and your module within the package is submod.py then from within submod.py file, you should just be able to say import testmod and use whatever you want that's defined in testmod.

少女净妖师 2024-07-18 20:19:02

我不完全确定情况是什么,但这可能会解决您的“不同名称”问题:

import __init__ as top
top.some_function()

或者也许?:

from __init__ import some_function
some_function()

I'm not totally sure what the situation is, but this may solve your "different name" problem:

import __init__ as top
top.some_function()

Or maybe?:

from __init__ import some_function
some_function()
鹤仙姿 2024-07-18 20:19:02

在 Django 中,manage.py 文件有 from django.core.management importexecute_manager,但 execute_manager 不是一个模块。 它是management 目录的__init__.py 模块中的一个函数。

In Django, the file manage.py has from django.core.management import execute_manager, but execute_manager is not a module. It is a function within the __init__.py module of the management directory.

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