鱼C论坛

 找回密码
 立即注册
查看: 1737|回复: 13

[已解决]tkinter 打包问题求助

[复制链接]
发表于 2020-9-1 11:25:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
win10
python3.7
一个py文件
期间有引用到pandas,matplotlib,seaborn第三方库
用pyinstaller打包exe
命令是 pyinstaller ui_test1.py -D -w ,打包出来的ui双击显示如附件图片。

显示执行失败。
这回事哪里出错了呢?还需要检查哪里呢?按照本论坛的帖子已经查看,装python的时候add path了。
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import seaborn as sns
  4. import tkinter as tk
  5. df = pd.read_excel(r'1.xlsx',index_col='年')
  6. # print(df.info())

  7. sns.lineplot(data=df,
  8.              markers=True)
  9. def show():
  10.     plt.show()
  11. win = tk.Tk()
  12. win.geometry('400x600+20+20')
  13. b1= tk.Button(win,text='显示图片',command=show).pack()
  14. win.mainloop()
复制代码


ui代码:
数据见附件图片
最佳答案
2020-9-1 12:45:42
rsj0315 发表于 2020-9-1 12:37
拖到cmd中报错是这样的,跟你说的还不一样。

刚才又做了个别的测试。

我就是用的你的代码,已经打包成功了,你要么加我QQ381671811,传给你看看

你的matplotlib版本是多少?我的是3.2.2
搜狗截图20200901104059.png
搜狗截图20200901112428.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-1 12:00:24 | 显示全部楼层
pyinstaller打包很坑的,会遇到很多问题
有错误的话,打包时不要去除控制台,在地址栏输入cmd,再运行exe,这样可以看到控制台内的报错,不会一闪而过

然后就发现缺了个模块,缺啥补啥,代码里加入import scipy.special.cython_special,再打包就好了
至于原因,说不清楚。。。。。。。。。。。。。。。。。
微信截图_20200901113956.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 12:02:39 | 显示全部楼层
还有好像还提示字体问题,但是能正常显示,不影响运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 12:04:59 | 显示全部楼层
打包的时候没有引入第三方包的路径
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 12:11:20 | 显示全部楼层
1q23w31 发表于 2020-9-1 12:04
打包的时候没有引入第三方包的路径

但是代码里也没用到scipy的内容,scipy说是依赖于numpy,也没用到numpy
为什么打包时需要scipy呢
而且只import scipy也不行,一定要import scipy.special.cython_special才行
是什么原因?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 12:37:34 | 显示全部楼层
本帖最后由 rsj0315 于 2020-9-1 12:39 编辑
疾风怪盗 发表于 2020-9-1 12:00
pyinstaller打包很坑的,会遇到很多问题
有错误的话,打包时不要去除控制台,在地址栏输入cmd,再运行exe ...


拖到cmd中报错是这样的,跟你说的还不一样。

刚才又做了个别的测试。
第一次,只是在ui中加了个按钮,没有用到第三方库。打包成功。
第二次测试,在第一次测试基础上 import matplotlib.pyplot一下,就显示执行不成功了。

图片时,求助问题的代码保留控制台后的报错。
检查过matplotlib的版本了,没问题

用到第三方库的时候,我是从项目的venv下边的lib里的对应的文件夹复制出来,和被打包的.py文件放到一个文件夹里边去了。
搜狗截图20200901123310.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 12:45:42 | 显示全部楼层    本楼为最佳答案   
rsj0315 发表于 2020-9-1 12:37
拖到cmd中报错是这样的,跟你说的还不一样。

刚才又做了个别的测试。

我就是用的你的代码,已经打包成功了,你要么加我QQ381671811,传给你看看

你的matplotlib版本是多少?我的是3.2.2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 13:57:00 | 显示全部楼层
C:\Users\renro001>"C:\Users\renro001\Desktop\New folder\dist\ui_test1\ui_test1.exe"
c:\users\renro001\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py:493: MatplotlibDeprecationWarning: Matplotlib installs where the data is not in the mpl-data subdirectory of the package are deprecated since 3.2 and support for them will be removed two minor releases later.
  exec(bytecode, module.__dict__)
Traceback (most recent call last):
  File "ui_test1.py", line 2, in <module>
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "c:\users\renro001\appdata\local\programs\python\python37\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module
    exec(bytecode, module.__dict__)
  File "matplotlib\__init__.py", line 898, in <module>
  File "matplotlib\cbook\__init__.py", line 480, in _get_data_path
  File "matplotlib\__init__.py", line 239, in wrapper
  File "matplotlib\__init__.py", line 534, in get_data_path
  File "matplotlib\__init__.py", line 239, in wrapper
  File "matplotlib\__init__.py", line 563, in _get_data_path
NameError: name 'defaultParams' is not defined
[15672] Failed to execute script ui_test1
在源码中加入了显示中文和特殊字符的语句,依然报错如上。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 14:16:25 | 显示全部楼层
rsj0315 发表于 2020-9-1 13:57
C:%users\renro001>"C:%users\renro001\Desktop\New folder\dist%ui_test1%ui_test1.exe"
c:%users\renro0 ...

那就不知道了。。。。。。。。。。。

还有一个办法就是,全部卸载干净,只安装一个版本python,配置环境,只安装需要的库,再打包

之前刚开始打包一直莫名其妙出错,全部卸载删除,再安装一次,到现在,打包都还算正常
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 14:23:40 | 显示全部楼层
疾风怪盗 发表于 2020-9-1 14:16
那就不知道了。。。。。。。。。。。

还有一个办法就是,全部卸载干净,只安装一个版本python ...

刚才一直在百度,换了必应后,发现有一个github上一样的报错
https://github.com/pyinstaller/pyinstaller/issues/5004

谁英语好可以去看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 22:29:53 | 显示全部楼层
今天把问题汇总一下:
1.tkinter做的gui,引用matplotlib的时候,需要matplotlib的版本为3.2.2.
这个是从github上找到的答案,最开始用的是最新的3.3.1,这个版本是不行的

2.后来运行py文件遇到了一个问题报警,但py文件可以运行出来,图像也可以显示。报警如下:
Setting Matplotlib MPLCONFIGDIR: consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data,
解决办法是:
import tempfile
os.environ['MPLCONFIGDIR']=tempfile.mkdtemp()
大概意思是我的 电脑上少一个缓存的地方,我看有人推荐上边的这种临时文件夹,就加在了源码的py文件中了。
3.后来打包好,闪退,报错是no module named ‘scipy.special.cython_special'
解决办法是:
从Lib>site-packages>scipy>special这个文件夹里边copy一个叫cython_special.cp37-win_amd64.pyd的放到打包文件的目录内。
上边几个问题都处理好后,pyinstaller -w -i xx.ico test.py 就成功了。

感谢疾风怪盗期间的帮助!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 22:47:14 | 显示全部楼层
rsj0315 发表于 2020-9-1 22:29
今天把问题汇总一下:
1.tkinter做的gui,引用matplotlib的时候,需要matplotlib的版本为3.2.2.
这个是从 ...

不客气
你说的第一个问题,新版本就是会出现问题
第二个问题没遇到过
第三个问题就是我在2楼说的,其实代码里import一下,也就可以直接打包到了

后来那个NameError: name 'defaultParams' is not defined这个是怎么解决的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 23:46:40 | 显示全部楼层
疾风怪盗 发表于 2020-9-1 22:47
不客气
你说的第一个问题,新版本就是会出现问题
第二个问题没遇到过

后来那个NameError: name 'defaultParams' is not defined这个是怎么解决的?

这个问题归根结底就是matplotlib的版本问题。
把他降成3.2.2,把pyinstaller也降成3.6了,就不报这个错误了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-1 23:55:17 | 显示全部楼层
rsj0315 发表于 2020-9-1 23:46
后来那个NameError: name 'defaultParams' is not defined这个是怎么解决的?

这个问题归根结底就是ma ...

好吧,还是版本问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 23:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表