Python: import the containing package

后端 未结 5 1406
夕颜
夕颜 2020-12-13 12:00

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

相关标签:
5条回答
  • 2020-12-13 12:41

    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.

    0 讨论(0)
  • 2020-12-13 12:42

    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.

    0 讨论(0)
  • 2020-12-13 12:52

    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
    
    0 讨论(0)
  • 2020-12-13 12:59

    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.

    0 讨论(0)
  • 2020-12-13 13:04

    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()
    
    0 讨论(0)
提交回复
热议问题