在Python包中的何处放置共享函数?

在Python包中的何处放置共享函数?,python,python-module,Python,Python Module,我正在创建一个供内部使用的python包&它有一些在其他模块中通用的内部函数。例如,以下功能正在其他模块中使用- def GetLocalImage(WebImage): ImageLink = WebImage.get("data-src") FileName = ImageLink.split("/")[-1] urllib.request.urlretrieve(ImageLink,FileName) return(FileName) 如您所见,函数需要使用urllib。

我正在创建一个供内部使用的python包&它有一些在其他模块中通用的内部函数。例如,以下功能正在其他模块中使用-

def GetLocalImage(WebImage):
  ImageLink = WebImage.get("data-src")
  FileName = ImageLink.split("/")[-1]
  urllib.request.urlretrieve(ImageLink,FileName)
  return(FileName)
如您所见,函数需要使用
urllib
。下面是包的文件结构-

formatter
\ __init__.py
\ File1.py    --> It would call GetLocalImage()
\ File2.py    --> It would call GetLocalImage()
我的主程序使用来自格式化程序导入的
*
语句。我的问题是-

  • 导入urllib函数的正确位置是什么
  • 我需要修改包结构吗

  • 我终于明白了。我是这样解决的-

  • 我将共享函数保存到另一个文件
    common.py
  • common.py
    中,我导入了urllib.request
  • File1.py
    File2.py
    中,我像
    一样从.common导入*
  • 在主程序中,它只是导入格式化程序
  • \uuuu init\uuuu.py
    文件中,我保存了-

  • 我想我们可以跳过
    \uuuu init\uuuu.py
    文件(不确定)。希望这对将来有帮助。

    我终于明白了。我是这样解决的-

  • 我将共享函数保存到另一个文件
    common.py
  • common.py
    中,我导入了urllib.request
  • File1.py
    File2.py
    中,我像
    一样从.common导入*
  • 在主程序中,它只是导入格式化程序
  • \uuuu init\uuuu.py
    文件中,我保存了-

  • 我想我们可以跳过
    \uuuu init\uuuu.py
    文件(不确定)。希望这对将来的人有所帮助。

    这项技术看起来简洁明了,但是
    common.py
    中的函数可以作为
    formatter.my_func
    formatter.common.my_func
    导入。这会造成一些混乱,在构建文档时也是如此(例如,使用docstring)。是的,我同意这一点。我需要检查一下,如果我从
    \uu init\uuuuuuuuuuuuuuupy
    中删除
    的.common import*
    ,会发生什么情况&只需将其保存在
    文件1.py
    文件2.py
    中,最佳实践似乎避免了
    从导入的某些内容中
    ,或者至少,在
    common.py
    的开头,使用
    \uuu all\uuuu=[“your_DEFINITIONS”]
    。这项技术看起来简洁明了,但是
    common.py
    中的函数可以作为
    formatter.my_func
    formatter.common.my_func>导入。这会造成一些混乱,在构建文档时也是如此(例如,使用docstring)。是的,我同意这一点。我需要检查一下,如果我从
    \uu init\uuuuuuuuuuuuuuupy
    中删除
    的.common import*
    ,会发生什么情况&只需将其保存在
    文件1.py
    文件2.py
    中,最佳实践似乎避免了
    从导入的某些内容中
    ,或者至少,在
    common.py的开头,使用
    \uuuu all\uuuu=[“您的定义”]
    from .common import *
    from .File1 import *
    from .File2 import *