整理Python软件包-导入与软件包一起使用的模块

时间:2019-03-05 15:32:55

标签: python import module package init

我正在编写代码并试图组织它,但是遇到了一些麻烦。

我真的很想拥有这样的结构:

/package
    /utils
      __init__.py
      func1.py
      func2.py
 __init__.py
 Main.py

我只需要做import package

所以我的__init__.py包裹中包含:

from package.main import mainfunction import package.utils

,而utils文件夹中的__init.py包含:

from package.utils.func1 import function1 from package.utils.func2 import function2

到目前为止,将其导入可以使我能够运行:

package.mainfunction()package.utils.function1()package.utils.function2()

但是,我遇到的问题是我的主要功能使用了OpenCV等其他模块以及utils文件夹中的功能。我尝试在utils .__ init_文件中添加import cv2。但是在尝试导入包之后,似乎init文件没有导入cv2。另外,如果我的mainfunction()包含package.utils.function1(),则似乎无法识别它。

我要使用奇怪的结构吗?还是可能出了什么问题?

ps。我可以在/ utils文件夹中工作,只需将def function()放在Main.py函数中即可。但是我更喜欢将它们放在外面,这应该可行吗?

1 个答案:

答案 0 :(得分:0)

对于任何对此有疑问的人,这就是我现在如何使其工作:

/package
     /utils
         __init__.py    -->  from package.utils.func1 import function1
                             from package.utils.func2 import function2
         func1.py
         func2.py

   __init__.py          -->  from package.main import mainscript

   main.py              -->  import package.utils
                             import cv2

现在,它使用import package

导入所有内容

确保在main.py中使用function1和function2就像package.utils.function1()