- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序(.py)在平台 vscode 上完美运行。但是用pyinstaller打包成.exe文件后,好像不行。错误消息是“ModuleNotFoundError:没有名为 plotly.validators.scatter 的模块” 这是我的代码“气泡图”:
# Bubble Diagram Version3.0
import tkinter as tk
import tkinter.filedialog as fd
import plotly as py
import plotly.graph_objs as go
import openpyxl
import pandas as pd
import os
class App(tk.Tk):
def __init__(self):
super().__init__()
self.path1 = fd.StringVar()
self.path2 = fd.StringVar()
self.name_input = fd.StringVar()
group_1 = tk.LabelFrame(self, padx=15, pady=10,
text="Input and Output Settings")
group_1.pack(padx=10, pady=5)
tk.Label(group_1, text='Step1').grid(row=0, column=0)
tk.Button(group_1, text="Import data from", bg='green',
width=20, command=self.choose_file).grid(row=0, column=1)
tk.Label(group_1, textvariable=self.path1, width=40, bg='grey', fg='white').grid(row=0, column=2, pady=5)
tk.Label(group_1, text='Step2').grid(row=1, column=0)
tk.Button(group_1, text="Set output path", bg='orange',
width=20, command=self.choose_directory).grid(row=1, column=1)
tk.Label(group_1, textvariable=self.path2, width=40, bg='grey', fg='white').grid(row=1, column=2, pady=5)
tk.Label(group_1, text='Step3').grid(row=2, column=0)
tk.Label(group_1, text='Input name WITHOUT suffix', bg='SteelBlue', width=20).grid(row=2, column=1)
tk.Entry(group_1, textvariable=self.name_input, bg='grey', width=40).grid(row=2, column=2)
group_2 = tk.LabelFrame(self, padx=15, pady=10, text="Implementation")
group_2.pack(padx=10, pady=5)
tk.Label(group_2, text='Step4').grid(row=0, column=0)
tk.Button(group_2, text="Start to plot", bg='red',
width=10, command=self.start).grid(row=0, column=1)
def choose_file(self):
filetypes = (("Excel files", "*.xlsx"),
)
self.filename = fd.askopenfilename(title="Open file",
initialdir="/", filetypes=filetypes)
self.path1.set(self.filename)
def choose_directory(self):
self.directory = fd.askdirectory(title="Open directory",
initialdir="/")
self.path2.set(self.directory)
def start(self):
self.draw(self.filename, self.directory)
def draw(self, input_file, output_dir):
self.input_file = input_file
self.output_dir = output_dir
wb = openpyxl.load_workbook(self.input_file)
sheet = wb['Sheet1']
row_max = sheet.max_row
col_max = sheet.max_column
first_row_list = []
first_col_list = []
for col_n in range(2, col_max + 1):
first_row_list.append(sheet.cell(row=1, column=col_n).value)
for row_n in range(2, row_max + 1):
first_col_list.append(sheet.cell(row=row_n, column=1).value)
data_all = pd.read_excel(self.input_file)
data_selected = data_all.loc[:, first_row_list]
df = pd.DataFrame(data_selected)
df.index = first_col_list
colors = ['rgb(150,204,90)', 'rgb(255, 130, 71)', 'rgb(255, 193, 37)', 'rgb(180,240,190)', 'rgb(255, 10, 1)',
'rgb(25, 190, 30)', 'rgb(100, 100, 100)', 'rgb(45,24,200)', 'rgb(33, 58, 108)', 'rgb(35, 208, 232)']
data = [go.Scatter(
x=df.columns,
y=[country] * len(df.columns),
mode='markers+text',
marker=dict(
color=colors[num],
size=df.loc[country],
showscale=False,
),
text=list(map(str, df.loc[country])),
textposition='middle center',
)
for num, country in enumerate(reversed(df.index))
]
layout = go.Layout(plot_bgcolor='rgb(10, 10, 10)',
paper_bgcolor='rgb(20, 55, 100)',
font={
'size': 15,
'family': 'sans-serif',
'color': 'rgb(255, 255, 255)'
},
width=1000,
height=800,
xaxis=dict(
title='Output of grapes per year in different countries',
nticks=col_max + 1,
type='category',
),
showlegend=False,
margin=dict(l=100, r=100, t=100, b=100),
hovermode=False,
)
fig = go.Figure(data=data, layout=layout)
self.name = self.name_input.get() + '.html'
py.offline.plot(fig, filename=os.path.join(self.output_dir, self.name))
if __name__ == "__main__":
app = App()
app.title("Bubble Diagram")
app.mainloop()
这是示例数据文件 (.xlsx):
1991 1992 1993 1994 1995 1996 1997
US 10 14 16 18 20 42 64
JAPAN 100 30 70 85 30 42 64
CN 50 22 30 65 70 66 60
我应该怎么做才能解决这个问题?谢谢
最佳答案
所以你还在为这个而苦恼吗?
您需要更新规范文件的“data”和“hiddenimports”部分以确保导入库。我在下面向您展示了我的(它工作得很好)。您需要修改它以包含 openpyxl、tkinter 和 pandas。
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\PycharmProjects\\PlotlyExample'],
binaries=[],
datas=[('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\plotly\\', 'plotly'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\kaleido\\', 'kaleido'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\pptx\\', 'pptx'),],
hiddenimports=['pandas','numpy','plotly','pptx'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
关于 plotly.json,我实际上遇到了与您相同的错误,所以我知道上述解决方案有效。 :)
同样重要的是,如果您要导出静态图像,请在规范文件中包含 Kaleido 或 Orcas。我正在使用 Kaleido,因此您可以在我的规范文件设置中看到它。
然后通过以下方式运行 PyInstaller:pyinstaller main.spec --clean
其中 main.spec 是您的规范文件(更改名称)。
编辑:为了使事情更容易,这是我的整个规范文件:
# -*- mode: python ; coding: utf-8 -*-
# Command to compile the spec and python files
# pyinstaller main.spec --clean --onefile
block_cipher = None
a = Analysis(['main.py'],
pathex=['C:\\Users\\user\\PycharmProjects\\PlotlyExample'],
binaries=[],
datas=[('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\plotly\\', 'plotly'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\kaleido\\', 'kaleido'),
('C:\\Users\\user\\PycharmProjects\\PlotlyExample\\venv\\Lib\\site-packages\\pptx\\', 'pptx'),],
hiddenimports=['pandas','numpy','plotly','pptx'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main')
关于python - 使用pyinstaller打包后,python中的程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63900949/
我在使用 nuget 打包新包时遇到问题,因为当我通过命令行指定版本时,它会将它应用于包而不是依赖项。即 NuGet.exe pack myproject.csproj -Version 3.0.4.
考虑这个简短的例子: $a = pack("d",255); print length($a)."\n"; # Prints 8 $aa = pack("ddddd", 255,123,0,45,12
我有一个我想要的无符号整数数组(32 位) pack 成二进制流: my @n = (4,8,15,16,23,42); my $foo = join('', map(pack('I', $_), @
在我的工作中,我们必须在各种环境中部署应用程序。这是一个标准的 WAR 文件,需要一些配置,部署在 Tomcat 6 上。 有没有什么方法可以使用 Tomcat 创建一个“部署包”,以便您只需提取它并
我正在编写一个简单的数据包序列化程序,但我很难为我的数据包创建 header 。我正在创建一个缓冲区,然后尝试将前两项加载到缓冲区中。我运行 memcopy 但缓冲区中实际上没有任何内容,然后当我尝试
有人可以解释为什么当你有一个普通的小部件时,一行代码 A 可以工作 Entry(root, width=10).pack(side=LEFT,anchor=W) 但是当你给它命名或附加命令时,代码 A
我正在尝试使用this tutorial构建Python包。这是文件夹结构: testpackage\ testpackage\ __init__.py
我有 JFrame 和 GridBagLayout。用户可以调整此窗口的大小。此外,他还可以执行一些更改窗口大小的编辑操作。我使用 pack(); repaint(); 现在在这样的操作之后。但是,实
我有一个现实世界的问题,我认为需要某种优化,而不是对我关心的数据数组进行简单排序。我将在下面概述问题: 我有一个由不同设备组成的数据集,每个设备都有属性 A 和 B。A 和 B 彼此不依赖,但是,我想
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我必须将旧的“加密”数据从旧系统转换为适当的加密算法。我有这段代码: function unpackString($s,$l){ $tmp=unpack('c'.$l,$s);
我有两个发电机。第一个生成器有时需要调用第二个生成器并返回它从那里获得的值: def a(): for _b in b(): yield _b def b(): yie
首先:对不起,我知道有很多关于相对导入的问题,但我只是没有找到解决方案。如果可能的话,我想使用以下目录布局: myClass/ __init__.py test/ de
1 ambari + bigtop 构建大数据基础平台 1.1 参考: 1.2 参考 amabri bigtop 打包部署
所以 SimpleInjector 现在有一个包装 nuget,您可以使用它来隔离根组合的不同方面。 假设我在一个库中有一个可配置的组合根,它被应用程序中的多个项目重用。例如,在 Azure 解决方案
我想以易于分发的形式打包 Groovy CLI 应用程序,类似于 Java 对 JAR 所做的。我一直无法找到任何似乎能够做到这一点的东西。我发现了一些类似 this 的东西用于一次性脚本,但不能编译
目前 ZMI 管理“打包数据库”的功能有点粗糙。 1) 是否有可能为 Web UI 提供某种进度指示器?例如。一个告诉你还剩多少分钟/小时,至少给出某种估计 2) ZODB 打包如何影响站点的响应性?
我有一个看起来像这样的结构: struct vdata { static_assert(sizeof(uint8_t *) == 8L, "size of pointer must be 8");
我已经尝试打包/发布我的 Azure 项目有一段时间了(但没有成功)。我尝试过以下方法: 右键单击 -> 从 Visual Studio 打包/发布 (OutOfMemoryException) CS
我创建了一个 JavaScript 库,并将其打包为以下选定的选项:Shrink Variables和Base62 Encoded在这个网址:http://dean.edwards.name/pack
我是一名优秀的程序员,十分优秀!