【问题标题】:Organizing package Python - importing modules that are used with the package组织包 Python - 导入与包一起使用的模块
【发布时间】:2019-03-06 20:03:06
【问题描述】:

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

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

/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 中我的函数内。但我更喜欢把它们放在外面,这应该是可能的吧?

【问题讨论】:

  • 您能分享一下您在两个 init 文件中的导入语句吗?
  • @suicidalteddy,我在描述中添加了它。我可以加载每个函数,但我不能在我的主脚本中使用 package.utils.function1() 或任何其他模块,例如 cv2。这就是我卡住的地方..
  • 除非您的 init 文件中有一些功能逻辑,否则您不需要在其中导入任何内容。为什么不在 main.py 中导入 cv2?
  • 似乎如果我在 main.py 中添加 from package.utils.func1 import function1 它不会导入它(除非我将导入放在 def function(): 结构中)。我可以运行脚本本身而不是函数,但我希望能够导入函数,以便我可以通过给它一些变量在 python 中运行它 (package.mainfunction(x,y,z)
  • 好的,我让它工作了!无论如何感谢您的帮助!

标签: python import module package init


【解决方案1】:

对于遇到此问题的任何人,这就是我现在的工作方式:

/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()

【讨论】:

    猜你喜欢
    • 2020-09-08
    • 2019-07-11
    • 2013-04-21
    • 2014-04-30
    • 2012-05-25
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 2012-12-24
    相关资源
    最近更新 更多