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

PyInstaller打包exe后出现AttributeError:plotly无express属性

解决PyInstaller打包Plotly代码时的AttributeError: module 'plotly' has no attribute 'express'问题

问题背景

我在Anaconda环境的Jupyter Notebook中编写了myFile.py代码,本地运行完全正常,但用PyInstaller打包为exe后执行报错。

代码内容

import math
import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
import plotly

DF = pd.read_csv('My CSV data file path')
myCol = DF['Temp'].value_counts(normalize = True)
fig = plotly.express.bar(myCol)
fig.show()

打包命令

pyinstaller myFile.py

报错信息

File "_plotly_utils\importers.py", line 39 in __getattr__
AttributeError: module 'plotly' has no attribute 'express'
Failed to execute script due to unhandled exception. 

已尝试的无效操作

  • 使用--onefile参数打包
  • 添加--hidden-import plotly.express作为隐式导入
  • 复制Anaconda环境中的整个plotly包到exe同目录
  • 通过conda update plotly将plotly更新至5.9.0版本
  • 尝试Stack Overflow相关问题的已采纳解决方案

可行解决方案

1. 显式导入plotly.express模块

PyInstaller的静态依赖分析无法识别Plotly的动态导入逻辑,直接显式导入plotly.express可让PyInstaller正确捕获依赖:
修改代码如下:

import math
import pandas as pd
pd.options.mode.chained_assignment = None  # default='warn'
import plotly.express as px  # 显式导入express

DF = pd.read_csv('My CSV data file path')
myCol = DF['Temp'].value_counts(normalize = True)
fig = px.bar(myCol)  # 使用px调用绘图方法
fig.show()

2. 通过.spec文件补充完整依赖

若不想修改代码,可生成.spec文件并手动添加Plotly的子模块依赖:

  1. 生成spec文件:
    pyinstaller --name myApp myFile.py
    
  2. 打开myApp.spec,在hiddenimports列表中添加Plotly相关子模块:
    hiddenimports=[
        'plotly.express',
        'plotly.express.colors',
        'plotly.express.data',
        'plotly.express._chart_types',
        'plotly.validators'
    ],
    
  3. 用spec文件重新打包:
    pyinstaller myApp.spec
    

3. 确保Plotly资源文件被打包

Plotly运行时需要加载内置的模板、数据等资源,打包时需确保这些文件被包含:

  1. 在代码中显式指定模板,避免动态加载失败:
    import plotly.io as pio
    pio.templates.default = "plotly_white"
    
  2. 在spec文件的datas中添加Plotly资源目录路径(替换为你的实际环境路径):
    datas=[
        (r'C:\Users\你的用户名\anaconda3\envs\你的环境名\Lib\site-packages\plotly\data', 'plotly/data'),
        (r'C:\Users\你的用户名\anaconda3\envs\你的环境名\Lib\site-packages\plotly\templates', 'plotly/templates')
    ],
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 09:15:17