导入python包时跳过目录的级别

Geo*_*rge 5 python python-2.7

我有一个目录结构,如:

Folder_in_PYTHONPATH/
??? Package1
?   ??? __init__.py
?   ??? src
?   ?   ??? Class1.py
?   ?   ??? Class2.py
?   ?   ??? __init__.py
?   ??? test
?       ??? testfile.py
??? Package2
?   ??? __init__.py
?   ??? src
?   ?   ??? Class1.py
?   ?   ??? Class2.py
?   ?   ??? __init__.py
?   ??? test
?       ??? test1.py
?       ??? test2.py
.
.
.
Run Code Online (Sandbox Code Playgroud)

当我从这个文件夹导入东西时,我需要总是输入

import Package1.src.Class1
Run Code Online (Sandbox Code Playgroud)

有什么方法可以设置我的,__init__.py以便我可以输入

import Package1.Class1
Run Code Online (Sandbox Code Playgroud)

反而?

Hol*_*way 4

将它们添加到包的__init__.py文件中,使它们看起来像:

from src import Class1
from src import Class2
Run Code Online (Sandbox Code Playgroud)

看一下文档

我建议将 *.py 文件放在其包的顶级文件夹中,以获得import Package_1.Class1您想要的行为。单元测试可以保留在自己的文件夹中,以将它们分开。

  • 这允许我使用“from Package1 import Class1”,但不允许我使用“import Package1.Class1” (4认同)