You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建Python包以实现便捷的函数导入?

实现自定义包的直接函数调用

要实现import my_functions as mf后直接用mf.func1(arg)调用函数,核心是修改包的__init__.py文件,将子模块中的函数暴露到包的顶层命名空间,具体步骤如下:

1. 修改src/__init__.py

打开my_functions/src/__init__.py,添加以下代码(根据你的实际函数名调整):

# 从各个子模块导入需要暴露的函数
from .func1 import func1
from .func2 import func2
from .func3 import func3

# 可选:定义__all__,控制`from my_functions import *`时导入的内容
__all__ = ["func1", "func2", "func3"]

这样当你导入my_functions包时,这些函数会直接挂载在包的命名空间下,无需单独导入子模块。

2. 确保包正确安装

如果是本地开发场景,需要将包以可编辑模式安装,确保Python能识别到my_functions包:

  • 在my_functions根目录下创建pyproject.toml文件,内容示例:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my_functions"
version = "0.1.0"
packages = ["src"]
package_dir = {"": "src"}
  • 打开终端,进入my_functions根目录,执行:
pip install -e .

-e参数表示可编辑模式,后续修改代码无需重新安装。

3. 验证调用

现在就可以按照预期方式调用函数了:

import my_functions as mf

a = mf.func1(arg)
b = mf.func2(arg)

进阶说明

  • 如果你想暴露模块而非单个函数(比如mf.func1.some_util()),可以在__init__.py中导入模块:from . import func1,但这样调用方式会变成mf.func1.func1(arg),不符合你的需求。
  • 避免使用from .func1 import *这种批量导入方式,容易引发命名冲突,显式导入需要的函数更清晰可控。

内容的提问来源于stack exchange,提问作者KevOMalley743

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:40:26