首先将py文件中所有文件路径改为资源访问路径,在python主文件中加入如下函数及类似路径
#生成资源文件目录访问路径
def resourcePath(relative_path):
if getattr(sys, 'frozen', False): #是否Bundle Resource
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
path_des = resourcePath(os.path.join("data", "download", "0.txt"))
path_gif = resourcePath(os.path.join("data", "loading.gif"))
path_error = resourcePath(os.path.join("data", "error.jpg"))
path_icon = resourcePath(os.path.join("data", "icon.ico"))
这样exe文件就无需附带数据文件,使用后会在下列目录生成临时文件
C:\Users\你的用户名\AppData\Local\Temp
用pipenv创建python3.6虚拟环境
1、安装pipenv
pip3 install pipenv
2、在干净目录下初始化python环境, 系统会自动在环境变量里搜索符合要求的python环境
pipenv --python 3.6
3、进入虚拟环境(第一次进入会自动进行安装 pipenv install)
pipenv shell
4、退出虚拟环境
exit
5、进入虚拟环境内,首先换源解决安装慢问题
用Notepad++(技术无罪。。)编辑环境下的Pipfile文件
换掉source里的url
[[source]]
name = "pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true
然后开始安装所需要的包
6、开始生成exe
首先需要生成spec文件,
pyi-makespec -Fw NetSpeedTest.py (如果要添加Icon等可以在这里就使用pyi-makespec --icon icon.ico -Fw NetSpeedTest.py语句生成spec文件)
编辑spec文件,在datas选项中说明需要将哪些文件加入exe,在临时文件夹中命名成什么,本次使用data文件夹,会将data的文件都拷贝过去,以及可以改新生成的exe文件名
生成EXE文件,pyinstaller -F NetSpeedTest.spec
如果报如下错误,肯定是因为路径名(比如icon的路径)写错
可以在新生成的dist文件夹里找到
运行时可以找到如下几个临时文件,软件关闭后会自动删除
参考文章:
网友评论