pyinstaller打包可执行文件,存放路径包含中文无法运行的解决方案
一、实验环境
1.Windows7x64_SP1
2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装)
3.pyinstaller3.0
二、问题描述
1.使用如上环境,pyinstaller打包生成的exe文件,存放在本地,如果路径中包含中文,程序无法运行;exe程序如果使用中文命名,程序同样无法运行。
三、解决方式
1.查看pyinstaller网站
https://pypi.org/project/PyInstaller/
2.有如下描述
3.更换实验环境
1.Windows7x64_SP1
2.anaconda3.7 + python3.7(anaconda集成,不需单独安装)
3.pyinstaller3.5 #使用pyinstaller3.0,打包时报错
4.打包exe程序,存放路径包含中文,exe程序可以正常运行
补充:pyinstaller的使用和几个坑
pyinstaller是一个非常简单的打包python的py文件的库。用起来就几条命令就够了
直接pip install pyinstaller 会下载到最新版的 3.3的pyinstaller,和之前版本的语法是不同的,这个版本直接cmd里输入
pyinstaller X:\XXX\XXX.py 就可以了 生成的文件就在c盘user\用户名\dist 下,而用户名文件下还有个buld里面存放了她运行的中间文件,里面有个warn文件详细记录了打包的错误,虽然没什么卵用,但至少可以拿来百度下骗骗自己。。。哈哈
另外说几个非常重要的问题
1.命令使用pyinstaller和pyinstaller.exe结果都是一样的
2.-w是不显示命令窗口, -i 图标文件的路径 这是改变图标的,但是我发现只能改变任务栏里的和命令窗口的图标,并不能改变exe文件的图标。另外这些参数要加载pyinstaller和路径中间。
3.有一些代码需要调用一些图片和资源文件的,这是不会自动导入的,需要你自己手动复制进去才行。不然exe文件运行时命令窗口会报错找不到这个文件。
4.也是最坑的一点。就是当你使用错误的参数去打包或者打包到一半中断,等等此类运行到一半没了的情况。会导致你原来的py文件变成一个0KB的空文件。里面的代码会全部消失!!!所以以后需要有个良好的习惯,就是复制一份代码出来,用这个副本进行打包。并且参数出错,或者打错了导致失败时,检查下副本文件的py文件是否还存在再继续重新打包,不然打出来的就是空的文件,自然一直闪退,因为压根没内容。
5.写代码的时候应当有个良好的习惯,用什么函数导什么函数,不要上来import整个库,最后你会发现你一个100KB的代码打包出来有500MB,全是库,简直无语
6.pygame代码调试的时候要用quit()不然程序结束时会崩溃。但是直接运行py文件就不需要这个函数。这个我们之前的文章也提到过了。但是这里当我使用-w做成无窗口的程序后,一结束发现报错,暂停后发现报的是找不到quit()函数。可见这个函数其实是一个很让人无语的函数。一方面pygame官方网上说结束程序的时候需要加入这个函数。另一方面其实在正在运行时都不需要甚至会报错。虽然也不影响运行,但是弹个窗口出来说 什么不fail to execute总是让别人觉得你是个lowb。所以,调试的时候加一下,到时候execute的时候去掉。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
Pyinstaller打包文件太大的解决方案
废话不多说 原因: 在Anaconda下打包的很多不必要的模块进去,导致最终的exe文件过于庞大. 解决办法: 要用纯净的python来打包即可避免加入不必要的包,那么如何快速地建立纯净的python环境呢? 当然不用重装python,只需要通过pipenv建立虚拟环境即可.在虚拟环境下打包,最终的exe文件会非常小(几M). #第一步,建立虚拟环境 pipenv install #第二步,进入虚拟环境 pipenv shell #第三步,安装自己最终打包的py文件下需要的模块即可 pip in
-
基于PyInstaller各参数的含义说明
说明 以下介绍假设用户脚本为main.py,生成结果为main.exe. 有些参数实在很少用到,只列出简单介绍,具体请参阅原文. 通用参数 参数名 描述 说明 -h 显示帮助 无 -v 显示版本号 无 –distpath 生成文件放在哪里 默认:当前目录的dist文件夹内 –workpath 生成过程中的中间文件放在哪里 默认:当前目录的build文件夹内 -y 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖 默认:询问是否覆盖 –upx-dir UPX_DIR 指定upx工具的目
-
基于pyinstaller超级加密操作(加壳和转c)
1.首先安装上必须的包 pip install Cython pip install pyinstaller 2.最好是安装vs 版本的话 我安装的是最新的2019,选择安装界面的时候选如下图这个和python的 python应该是可选的,但是我怕麻烦就直接选上了 3.然后接下来就是写setup.py文件了 from distutils.core import setup from Cython.Build import cythonize setup( ext_modules = cython
-
解决Pyinstaller打包软件失败的一个坑
最近写了一个软件屡屡打包不能正常运行,而直接在cmd命令行窗口运行却都能正常输出,没有任何报错,一开始怀疑程序里面sys.args[1]使用不对,找了很久发现import numpy才是导致代码不能打包的直接原因. 不知道为何引用这个包就不能正常打包成exe了. 程序编译中出错的代码如下 pyinstaller -F C:\Users\LHD_PC\AppData\Local\Progr ams\Python\Python38-32\Scripts\AutoElecCalcE.py 91 INF
-
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
(一)功能实现效果: 选择文件的效果: 标记预加水印的位置: (二)Python代码: # -*l- coding:utf-8 * import os, io, sys, re, time, json from pandas import array import matplotlib.backends.backend_tkagg import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt #from mat
-
pyinstaller封装exe的操作
我使用的是anaconda.我推荐大家使用anaconda,对环境依赖关系处理的比较好.不用浪费太多时间在安装模块上. 首先安装pyinstaller.命令: pip install pyinstaller 需要封装的代码为一个api消息框.代码如下,保存的是pyw文件,放在桌面上. # -*- coding: utf-8 -*- """ Created on Sun Jul 1 21:58:06 2018 @author: FanXiaoLei ""&q
-
pyinstaller打包可执行文件,存放路径包含中文无法运行的解决方案
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.问题描述 1.使用如上环境,pyinstaller打包生成的exe文件,存放在本地,如果路径中包含中文,程序无法运行:exe程序如果使用中文命名,程序同样无法运行. 三.解决方式 1.查看pyinstaller网站 https://pypi.org/project/PyInstaller/ 2.有如下描述 3.更换实
-
解决python3 网络请求路径包含中文的问题
在爬一个网站的时候,端点包含中文浏览器是可以自动解决这个转换的,在代码中就需要处理一下了. 请求过程的异常如下: self._output(request.encode('ascii')) UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-11: ordinal not in range(128) 解决如下: import urllib.parse reqStr = '你好' encodeStr =
-
java下载url路径包含中文需要转义的操作
大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters are defined in RFC 7230 and RFC 398 下面我们对中文路径进行截取转义 int lastIndexOf = downloadUrl.lastIndexOf('/'); String fileName = downloadUrl.substring(lastIndexOf
-
pyinstaller打包python3.6和PyQt5中各种错误的解决方案汇总
目录 前言: 1. WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency 2. 打包完成后运行时出现 "fail to excute script" 总结 前言: 最近在学习单片机,老师要求自己写串口通信的上位机程序,我采用比较简单的pyqt5+serial模块来完成任务,pycharm测试一切正常,在用pyinstaller打包时出现了很多错误,查询了很多资料后得到了解决,这里汇总一下解决的方法 1.
-
Pyinstaller 打包发布经验总结
使用Pyinstaller打包Python项目包含了大量的坑,这篇文章总结实践得到的Pyinstaller打包经验.本文的例子为Python3.6代码,Pyinstaller3.4,在windows下打包为64位和32位版本. Pyinstaller基本使用方法 Pyinstaller可以通过简单的命令进行python代码的打包工作,其基本的命令为: pyinstaller -option xxx.py options的详情可参考官方帮助文档https://pyinstaller.readthe
-
解决Pyinstaller打包为可执行文件编码错误的问题
错误信息 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position *** 解决方案 命令行中先输入 chcp 65001 再输入打包命令. pyinstaller -F xxx.py 补充:pyinstaller打包python程序时遇到递归超界和字符编码错误的问题与解决方法 打包命令:pyinstaller -F xx.py -F一定要加上,其含义是生成独立的可执行文件 问题一:超过递归深度 由于python文件
-
如何利用pyinstaller打包Python程序为exe可执行文件
序 对于如何将py文件打包生成exe可执行文件最简单的应该我觉得就是使用pyinstaller第三方模块 下面我就分为三个步骤给大家讲解如何使用 并分享一点小技巧 下面直接进入分享啦 安装pyinstaller第三方库 既然要安装第三方库,当然离不了pip install啦 直接使用pip install pyinstaller就可以安装啦 (不过这样似乎遇到第三方模块比较大的话就很慢甚至无法成功安装啦 ) 安装第三方库的小技巧 当然有解决办法呀 那就是使用国内镜像源 添加后就像是开挂了的 pi
-
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
利用Pandas的read_csv函数导入数据文件时,若文件路径或文件名包含中文,会报错,无法导入: import pandas as pd df=pd.read_csv('E:/学习相关/Python/数据样例/用户侧数据/账单.csv') 解决方法如下: import pandas as pd f=open('E:/学习相关/Python/数据样例/用户侧数据/账单.csv') df=pd.read_csv(f) 以上这篇利用Pandas读取文件路径或文件名称包含中文的csv文件方法就是小编
-
Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)
问题 如何使用 pyinstaller 打包使用了 gettext 本地化的项目,最终只生成一个 exe 文件 起因 最近在用 pyhton 做一个图片处理的小工具,顺便接触了一下 gettext,用来实现本地化化中英文转换.项目主要结构如下: . |--src # 源码 | |--package1 | |--package2 | |--locales # 本地化文件 | | |--en # 英文 | | | |--LC_MESSAGES | | | |--en.mo | | |--zh # 中
-
pyinstaller打包单个exe后无法执行错误的解决方法
1.执行环境说明 python版本3.7 直接使用pip进行安装pywin32.pyinstaller pip install pywin32 pip install pyinstaller 2.使用了第三方库的情况 建议在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退.pyinstaller -p参数是添加的pyinstaller打包程序时的扫描路径,假设venv\Lib\site-package
随机推荐
- 分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
- 易语言批量检测QQ号昵称的方法(推荐)
- 如何用ASP输出HTML文件?
- JS的encodeURI和java的URLDecoder.decode使用介绍
- access不能打开注册表关键字错误处理方法(80004005错误)
- jQuery Jcrop插件实现图片选取功能
- java 实现 stack详解及实例代码
- python爬虫_自动获取seebug的poc实例
- Python的Django框架安装全攻略
- Python的Django框架中模板碎片缓存简介
- asp知识整理笔记4(问答模式)
- python实现apahce网站日志分析示例
- jquery ajax执行后台方法
- Android自定义圆角ImageView控件
- 服务器变量 $_SERVER 的深入解析
- Java 是如何利用接口避免函数回调的方法
- 微信小程序传值以及获取值方法的详解
- Spring-cloud-eureka使用feign调用服务接口
- Oracle GoldenGate同步服务归档空间维护【推荐】
- mysql 8.0.15 winx64安装配置方法图文教程