Import from sibling directory

后端 未结 3 2088
忘了有多久
忘了有多久 2020-11-30 02:14

I have a Python class called \"ClassA\" and another Python class which is supposed to import ClassA which is \"ClassB\". The directory structure is as follows:



        
相关标签:
3条回答
  • 2020-11-30 02:36

    You can use relative import (example from link, current module - A.B.C):

    from . import D                 # Imports A.B.D
    from .. import E                # Imports A.E
    from ..F import G               # Imports A.F.G
    
    0 讨论(0)
  • 2020-11-30 02:37

    You really should be using packages. Then MainDir is placed at a point in the file system on sys.path (e.g. .../site-packages), then you can say in ClassB:

    from MainDir.Dir.DirA import ClassA # which is actually a module
    

    You just have to place files named __init__.py in each directory to make it a package hierarchy.

    0 讨论(0)
  • 2020-11-30 02:42

    as a literal answer to the question 'Python Import from parent directory':

    to import 'mymodule' that is in the parent directory of your current module:

    import os
    parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    os.sys.path.insert(0,parentdir) 
    import mymodule
    

    edit Unfortunately, the __file__ attribute is not always set. A more secure way to get the parentdir is through the inspect module:

    import inspect
    currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    parentdir = os.path.dirname(currentdir)
    
    0 讨论(0)
提交回复
热议问题