是否可以解决相对导入的问题?

Is it possible to fix problems with relative imports?

我在导入机制方面遇到了一些问题。例如我有一棵这样的树:

├── my_package  
|   ├── first.py  
|   └── second.py  
└── test.py

second.py:

def second_func():
    print('Hello World')

first.py:

from second import second_func

def first_func():
    second_func()

test.py:

from my_package.first import first_func

first_func()

当我尝试 运行 test.py 我得到这个错误:

ModuleNotFoundError: No module named 'second'

感觉second.py不是在my_package里找的,而是在my_pacakagetest.py所在的目录里找的。这是一个奇怪的机制,因为如果我有一个现成的包,我不想在里面创建一些新文件,我想从另一个地方与它交互。

首先在my_package中创建一个__init__.py。将 first.py 的导入语句更改为以下

from .second import second_func

然后运行python test.py。它应该给 Hello World