pyinstaller将数据文件一起打包生成单个exe文件的方法

2019-12-23  本文已影响0人  安哥拉的赞礼

首先将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文件夹里找到

运行时可以找到如下几个临时文件,软件关闭后会自动删除

参考文章:

上一篇下一篇

猜你喜欢

热点阅读