python之如何将程序打包成exe可执行文件

1.exe打包

pip install pyinstaller

注意事项:

        支持win(建议使用python3.6.8)

        配合虚拟环境打包

1.在windows中创建虚拟环境+项目

2.开发......

3.开发完毕后

        pip freeze > requirements.txt

4.打开win虚拟机

5.创建虚拟环境 

6.安装项目依赖

        pip install -r requirements.txt

7.安装pyinstaller

        pyinstaller -F xxxxx

产出: XXX.exe

1.1多文件

pyinstaller -D app.py

打包成功会生成3个文件夹。

后缀为spec的文件为配置文件,build不重要,他是打包过程中生成的文件,可执行文件在dist中。

 1.2 单文件

pyinstaller -F app.py

 1.3 路径问题

        多文件打包,不会报错。

        单文件打包,报错。

为什么会报错?解析到临时目录问题。

1.3.1 sys.argv

import time 
import os
import sys


BASE_DIR =os.path.dirname(os.path.realpath(sys.argv[0]))

print("----欢迎使用xxx系统")
with open(os.path.join(BASE_DIR,"account.txt"),mode='r',encoding='utf-8') as f:
    data = f.read().strip
print(data)
time.sleep(5)

1.3.2 frozen

importtime
import os
import sys
if getattr(sys,'frozen',False):
    BASE DIR =os.path.dirname(sys.executable)
else:
    BASE DIR=os.path.dirname(os.path.abspath( file))
print("----环境使用xxx系统----")
with open(os.path.join(BASE DIR,"account.txt"),mode='r',encoding='utf-8')as f:
data =f.read().strip()
print(data)
time.sleep(5)

1.4 关于模块的问题

  1. 问题:打包后的可执行文件运行时报错 "ImportError: No module named 'xxx'" 解决方法:这种情况下,通常是由于打包时没有包含所需的第三方模块。可以使用--hidden-import参数指定需要包含的模块,或者使用--additional-hooks-dir参数指定一个包含hook脚本的文件夹,hook脚本中可以指定需要包含的模块。

  2. 问题:打包后的可执行文件没有图标或者图标显示不正确。 解决方法:可以使用--icon参数指定一个图标文件。

  3. 问题:打包后的可执行文件运行时报错 "FileNotFoundError: [Errno 2] No such file or directory: 'xxx'" 解决方法:这种情况下,通常是由于打包时没有正确包含所需的文件。可以使用--add-data参数指定需要包含的文件,或者使用--add-binary参数指定需要包含的二进制文件。

  4. 问题:打包后的可执行文件在某些操作系统上运行正常,但在其他操作系统上报错。 解决方法:这种情况下,通常是由于打包的可执行文件和目标操作系统不兼容。可以尝试在目标操作系统上重新打包,或者使用虚拟机等工具进行测试。

  5. 问题:打包后的可执行文件运行时报错 "PermissionError: [Errno 13] Permission denied: 'xxx'" 解决方法:这种情况下,通常是由于打包的可执行文件没有足够的权限访问某些文件或文件夹。可以尝试以管理员身份运行可执行文件,或者修改程序中访问文件和文件夹的权限。

如果遇到那种动态导入模块的代码时,他是无法找到关联的包的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值