Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法
折腾了一天遇到了几个头疼的问题,还好回去前解决掉了
第一个:执行cxfreeze打包好的程序遇到 tkinter 和 _tkinter的缺失问题
首先确认是不是已经装了TK的工具:yum install tk-devel
如果已经有了,终端:
python tkinter
python _tkinter
print(tkinter)
print(_tkinter)
找到这两个包的所在位置,然后复制到cxfreeze打包的目录下
接下来再次执行,提示:

首先看一下系统有没有安装 tk tcl 。没有的话: yum -y install tkinter tcl-devel tk-devel
有的话
import tkinter
root = tkinter.Tk()
print(root.tk.exprstring('$tcl_library'))
print(root.tk.exprstring('$tk_library'))
找到 tcl 和 tk 的安装位置
在setup.py 里面加这样的几句话:
os.environ['TCL_LIBRARY'] = "usr/share/tcl8.5"
os.environ['TK_LIBRARY'] = "usr/share/tk8.5"
os.environ['TKPATH'] = "usr/share/tk8.5"
重新打包 python setup.py install
再次运行可执行程序报错:

这次连错误信息都没有就很难受,折腾了一下午差点放弃,最后偶然发现是路径的问题,打包的文件路径名包含 “文档/” 也就是包含中文字符
试着换了一个纯英文的路径名成功!
然后又碰到了更难受的问题,matplotlib程序在linux的终端执行,没有桌面环境,报错:

解决办法:
import matplotlib.pyplot as plt 后面加一句 plt.switch_backend("agg")
在本地虚拟机上测试,查看并关闭centos7的图形界面:
第三个问题:
使用cx-freeze打包tensorflow遇到的一堆问题(修改包源码前一定要备份)
1、编译没有报错,执行的时候报错:
错误定位:..../site-packages/window.py -> import pandas.core.common as com
module 'pandas' has no attribute 'core'
解决方法:
更改window.py
把所有的import ...as 改成 from ... import ....as
from pandas.core import common as com
python -m compileall __init__.py
重新install问题解决
2、TypeError 路径错误 for (dir_) in _site_packages_dirs
TypeError : startswith first arg must be str or a tuple of str,not NoneType
错误原因,import site as _site这里,如果不使用cx-freeze打包,_site.USER_SITE变量指示的是python安装目录中site-packages的位置。
而当我们用cx-freeze打包,site-packages的位置不再存在,新的包位置是lib,所以执行到这里_site.USER_SITE变量=None
解决方法:
在..../site-packages/tensorflow/__init__.py 文件的700行左右添加:
if _site.USER_SITE==None:
_site.USER_SITE=_os.path.join(_os.path.abspath(.),"lib")
改成当前相对路径下的lib文件夹
python -m compileall __init__.py
重新install
问题解决
问题解决,痛并快乐的一天
Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法的更多相关文章
- vue打包静态资源路径不正确的解决办法
vue打包静态资源路径不正确的解决办法 vue项目完成打包上线的时候会碰到静态资源找不到的问题,常见的有两个 1.js,css路径不对 解决办法:打开config/index.js,将其中的asset ...
- Python打包成exe,文件太大问题解决办法
Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...
- ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法
ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法 前几天卸掉了用了好多年的Windows,安装了Ubuntu12.04,就开始各种搭环境.今天装好了MySQ ...
- centos 下安装jdk、tomcat 以及tomcat无法从外部访问的解决办法
centos 下安装jdk.tomcat 以及tomcat无法从外部访问的解决办法 原创 2014年08月28日 10:24:33 标签: selinux enforce cent 2223 昨天在c ...
- Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法
Ubuntu下安装软件提示无法锁定管理目录(/var/lib/dpkg/)的解决办法 在安装软件的时候,有时候提示,无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 这是 ...
- centos7虚拟机下python3安装matplotlib遇到的一些问题
1.安装位置 centos7虚拟机+python3.6 2.问题 2.1如果是使用的python2版本可以使用如下方式, #yum search matplotlib 返回如下: 已加载插件:fast ...
- 【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter
Fix tcl/tk libs inclusion in tkinter with Python3.7 under MacOS 使用 Pyinstaller 打包时候报错 3027 ERROR: Tc ...
- python3.6 使用pyinstaller 打包web程序的方法
官方文档连接 (https://pyinstaller.readthedocs.io/en/stable/ ) 第一步,下载pywin32 首先下载pywin32,下面是下载链接,下载自己的系统版本对 ...
- MAC下配置gradle用eclipse 打包android程序
1.下载gradle binhttp://gradle.org/gradle-download/ 2.配置gradle,http://www.douban.com/note/311599602/htt ...
随机推荐
- PHP 与 Redis 入门教程
Redis 官方推荐的 PHP 客户端是 Predis 和 phpredis. 前者是完全使用 PHP 代码实现的原生客户端,而后者则是使用 C 语言编写的 PHP 扩展.在功能上两者区别并不大,就性 ...
- 【Part1】用JS写一个Blog(node + vue + mongoDB)
学习JS也有一段时间了,准备试着写一个博客项目,前后端分离开发,后端用node只提供数据接口,前端用vue-cli脚手架搭建,路由也由前端控制,数据异步交互用vue的一个插件vue-resourse来 ...
- Hadoop体系所有组件默认端口列表
Why? Hadoop集群组件太多,默认端口无法记住,有事后需要查看,就在这里罗列下这里包含我们使用到的组件:HDFS, YARN, Hbase, Hive, ZooKeeper。 What? 端口 ...
- 关于python的整形(int)自动转长整形(long)的问题
有时需要访问某个接口,其中传入的整形参数可能比较长就会变成long,这时如果用str()的话‘L’就会被转化到字符串中,导致接口不能识别: 这种情况下应该优先使用json来转译,可以完美保持翻译pyt ...
- mac 安装 java 配置
在mac电脑上开发java,需要配置java环境变量,mac不同于windows系统.不过呢,配置流程也相对简单. 安装jdk 首先查看,电脑上是否装了jdk. 在终端输入 java -versio ...
- 讲的很详细的一篇关于object equals() & hashCode() 的文章
转: 讲的很详细的一篇关于object equals() & hashCode() 的文章 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java ...
- Docker:架构分解
17分钟快速浏览一遍 Docker内部构建 要理解Docker内部构建,需要理解以下三种部件: Docker镜像(Image) Docker容器(Container) Docker仓库(reposit ...
- 团体天梯赛 L3-001. 凑零钱
L3-001. 凑零钱 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现 ...
- COUNT多列,但是每列都是不同条件的,怎么用一句SQL写?
原文发布时间为:2010-09-06 -- 来源于本人的百度文章 [由搬家工具导入] 《转》http://www.cnblogs.com/ruanzuzhang/archive/2009/02/22/ ...
- 泛型Dictionary效率要大于HashTable!
原文发布时间为:2009-09-28 -- 来源于本人的百度文章 [由搬家工具导入] Dictionary,Hashtable, ArrayList, List学习 Dictionary 泛型的优点( ...