python packaging for relative imports

前端 未结 3 1005
小蘑菇
小蘑菇 2020-11-29 19:18

First off all: I\'m sorry, I know there has been lots of question about relative imports, but I just didn\'t find a solution. If possible I would like to use the following d

3条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-29 19:33

    After hours of searching last night I found the answer to relative imports in python!! Or an easy solution at the very least. The best way to fix this is to have the modules called from another module. So say you want demo.py to import myClass.py. In the myClass folder at the root of the sub-packages they need to have a file that calls the other two. From what I gather the working directory is always considered __main__ so if you test the import from demo.py with the demo.py script, you will receive that error. To illustrate:

    Folder hierarchy:

    myClass/
        main.py #arbitrary name, can be anything
        test/
            __init__.py
            demo.py
        src/
            __init__.py
            myClass.py
    

    myClass.py:

    def randomMaths(x):
        a = x * 2
        y = x * a
        return y
    

    demo.py:

    from ..src import myClass
    
    def printer():
        print(myClass.randomMaths(42))
    

    main.py:

    import test.demo
    
    demo.printer()
    

    If you run demo.py in the interpreter, you will generate an error, but running main.py will not. It's a little convoluted, but it works :D

提交回复
热议问题