如何配置 Python 以便我可以直接从包中导入函数?

Posted

技术标签:

【中文标题】如何配置 Python 以便我可以直接从包中导入函数?【英文标题】:How to configure Python so that I can import a function directly from package? 【发布时间】:2021-11-08 02:16:07 【问题描述】:

假设我有一个类似的包结构

pkg
   __init__.py
   module
      __init__.py
      a.py
      b.py

假设a.py中有一个函数func。我想创建一个库,可以直接从 pkg 导入 func

from pkg import func

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

您可以通过__init__.py 进行配置。

pkg/__init__.py

from .module.a import func

这样当pkg被访问时,__init__.py会被加载,从而允许直接访问pkg.func

这是documented:

常规包通常实现为包含__init__.py 文件的目录。导入常规包时,会隐式执行此 __init__.py 文件,它定义的对象将绑定到包名称空间中的名称。 __init__.py 文件可以包含与任何文件相同的 Python 代码其他模块可以包含,Python在导入时会为模块添加一些额外的属性。

【讨论】:

以上是关于如何配置 Python 以便我可以直接从包中导入函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从包内的两个不同文件夹中导入一个模块,该模块导入另一个模块

如何构建 Python C 扩展,以便我可以从模块中导入它

通用Lisp从包中导出符号

未找到模块:错误:包路径 ./locales 在角度更新到 13 后未从包中导出

如何从 Eclipse 中导出 Jetty 启动配置 [重复]

21 天补充 包