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

如何正确构建Python包,实现导入后无需模块名调用函数?

问题原因与解决方案

为什么会报错?

当你执行from package_name import my_module时,仅将my_module这个模块对象导入到当前代码的命名空间中。my_function是my_module内部的函数,属于模块的属性,并未直接进入当前命名空间,因此直接调用my_function()时Python找不到该名称,抛出NameError。

解决方法(按需选择)

方法1:直接导入目标函数

如果你只需要使用my_function,可以跳过模块直接导入函数:

from package_name.my_module import my_function
print(my_function())

利用你已在__init__.py中将my_function导入包命名空间的设置,也可以直接从包导入:

from package_name import my_function
print(my_function())

方法2:从已导入的模块中提取函数

如果已经导入了my_module,可以额外把函数拉到当前命名空间:

from package_name import my_module
from my_module import my_function
print(my_function())

或者一步完成导入:

from package_name.my_module import my_module, my_function

方法3:通配符导入(不推荐)

用*导入模块内所有名称,虽能直接调用函数,但易引发命名冲突,仅适合小型测试场景:

from package_name.my_module import *
print(my_function())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:25:21