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

导入自定义py模块绘图函数报plt未定义NameError的解决方法

问题描述

在Notebook中编写了若干用于简化编码(主要覆盖绘图场景)的自定义函数,将对应.py文件导入其他Notebook使用时,遇到自定义函数调用报错。

  • 首先创建了名为plots_custom_functions.py的文件,初始版本文件内仅定义了绘图标签设置函数,未导入依赖:
def get_label(TITLE, X, Y):
    ''' 
    this function appends the labels to a plot. Arguments in the following order:
    Title, x label, y label
    '''
    plt.title(TITLE)
    plt.xlabel(X)
    plt.ylabel(Y)
    plt.show
  • 新建另一个Notebook后,写入如下导入语句:
import seaborn as sns
import matplotlib.pyplot as plt
import plots_custom_functions 
  • 编写绘图代码尝试调用自定义函数:
sns.histplot(data=my_data, x='my_x')
get_label('MY_TITLE', 'MY_X)', 'MY_Y' )

运行后触发报错:

NameError: name 'plt' is not defined

先后尝试在plots_custom_functions.py的文件头部、get_label()函数内部添加import matplotlib.pyplot as plt语句,仍然出现相同报错,无法定位问题根源。


解决方案

报错的核心原因有两点:一是自定义模块文件初始未声明自身依赖的matplotlib库,二是使用import 模块名的方式导入后,直接写函数名调用相当于在当前Notebook的全局作用域查找函数,没有正确从导入的模块中引用目标函数。
按如下步骤调整即可正常运行:

  • 第一步:修正plots_custom_functions.py,在文件头部添加依赖导入语句,修正后完整文件内容:
import matplotlib.pyplot as plt

def get_label(TITLE, X, Y):
        ''' 
        this function appends the labels to a plot. Arguments in the following order:
        Title, x label, y label
        '''
        plt.title(TITLE)
        plt.xlabel(X)
        plt.ylabel(Y)
        plt.show
  • 第二步:调整Notebook中的导入语句,两种写法选一种即可:
    • 按需导入单个目标函数,导入后可直接调用函数:
      from plots_custom_functions import get_label
      
    • 一次性导入该文件内所有自定义函数,无需逐个声明函数名,便捷性更高:
      from plots_custom_functions import *
      

注意:不建议在单个.py文件中定义过多自定义函数,否则使用通配符导入时容易出现变量/函数命名冲突问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:20:03