python中的程序用pyinstaller打包后无法运行

我的程序(.py)在 vscode 平台上完美运行。然而,用pyinstaller打包成.exe文件后,似乎不起作用。错误消息是“ModuleNotFoundError:没有名为plotly.validators.scatter的模块” 这是我的代码“气泡图”:

https://img1.mukewang.com/64d200210001649905620248.jpg

https://img1.mukewang.com/64d2002c000119d509780512.jpg

# 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)


            ),


我应该怎么做才能解决问题?谢谢


慕桂英3389331
浏览 232回答 1
1回答

慕姐8265434

那么你还在为此苦苦挣扎吗?您需要更新规范文件的“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 --onefileblock_cipher = Nonea = 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')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python