鱼C论坛

 找回密码
 立即注册
楼主: mzlhandsome

[已解决]怎么把飞机大战的py文件做成安装包

[复制链接]
发表于 2020-5-28 00:58:10 | 显示全部楼层
1、执行环境说明

python版本3.7

直接使用pip进行安装pywin32、pyinstaller

pip install pywin32
pip install pyinstaller

2、使用了第三方库的情况

建议在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退。pyinstaller -p参数是添加的pyinstaller打包程序时的扫描路径,假设venv\Lib\site-packages是包存放路径,那么也可以使用以下命令打包:

pyinstaller -p venv\Lib\site-packages -F xxx.py

3、failed to execute script 错误

首先使用

pyinstaller -F -w code.py

进行exe打包,得到的单个.exe文件,运行后提示failed to execute script 错误

排错过程:使用pyinstaller -D code.py进行exe打包,得到一个目录文件,通过命令行执行.exe文件提示The 'six' package is required; normally this is bundled with this package错误

说明pyinstaller打包后,需要six等库,最终确认需要在code.py中添加以下库:

1
2
3
4
5
import six
import packaging
import packaging.version
import packaging.specifiers
import packaging.requirements
当然,six和packaging库建议使用pip安装。加入以上库后,使用pyinstaller -D code.py打包执行不再出错。

4、找不到数据文件夹

有些程序包含了数据文件夹,不能直接按资源文件方式打包,需要在执行文件所在的文件夹内创建这些数据文件。一般情况下在脚本中我们可以使用os.path.split(os.path.abspath( __file__))来的到code.py的路径,然后拼接得到数据文件夹。但之后使用pyinstaller -F code.py打包成单个exe文件,在未读取数据文件夹的情况下运行正常,一旦打开数据文件,就会闪退,命令行窗口会显示打不开数据文件。因为PyInstaller会创建临时文件夹temp,程序代码在这个临时文件夹中运行,我们可以用以下几个语句来查看正式运行路径:

1
2
3
4
5
6
import sys
import os
print(sys.path[0])
print(sys.argv[0])
print(os.path.dirname(os.path.realpath(sys.executable)))
print(os.path.dirname(os.path.realpath(sys.argv[0])))
得到的结果是os.path.dirname(os.path.realpath(sys.executable))和os.path.dirname(os.path.realpath(sys.argv[0]))才是含数据文件夹的路径。因此可以按如下方式取得文件路径,然后根据需要拼接得到数据文件夹的真实路径:

1
2
3
4
5
6
if hasattr(sys, '_MEIPASS'):
# PyInstaller会创建临时文件夹temp
# 并把路径存储在_MEIPASS中
  self.appPath = os.path.dirname(os.path.realpath(sys.executable))
else:
  self.appPath, filename = os.path.split(os.path.abspath( __file__))
  if hasattr(sys, '_MEIPASS'):
  # PyInstaller会创建临时文件夹temp
  # 并把路径存储在_MEIPASS中
    self.appPath = os.path.dirname(os.path.realpath(sys.executable))
  else:
    self.appPath, filename = os.path.split(os.path.abspath( __file__))
修改完成后,分别以以下三种方式打包,运行成功

1
2
3
pyinstaller -D code.py
pyinstaller -F code.py
pyinstaller -w -F code.py
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 07:24:04 | 显示全部楼层
Richard_Chiang 发表于 2020-5-28 00:58
1、执行环境说明

python版本3.7

emmm……lz要的好像是打包安装包,不是exe……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 08:01:19 | 显示全部楼层
不用编辑器直接打开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 09:09:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 09:16:32 | 显示全部楼层
解释型语言也能打包啊?又没编译器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 16:35:25 | 显示全部楼层
安装pyinstaller
PowerShell
PS C:\Users\asus> cd E:\飞机大战
PS E:\飞机大战> pyinstaller main.py enemy.py bullet.py myplane.py supply.py
生成dist和build
把images,font,sound三个文件复制到 dist\main\
运行exe
有其他问题就百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-28 22:52:45 | 显示全部楼层
f1305147 发表于 2020-5-28 09:16
解释型语言也能打包啊?又没编译器。

你以为?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 09:15:54 | 显示全部楼层
时光纪 发表于 2020-5-28 16:35
安装pyinstaller
PowerShell
PS C:%users\asus> cd E:\飞机大战

lz不是这个意思……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 20:52:36 | 显示全部楼层
后缀改成zip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-29 21:43:23 | 显示全部楼层

胡说第一名。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 08:52:00 From FishC Mobile | 显示全部楼层
1q2w3easxz 发表于 2020-5-29 20:52
后缀改成zip

你可真行呀呵呵
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 11:27:54 | 显示全部楼层

哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 11:28:32 | 显示全部楼层

谢谢夸奖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-30 11:29:14 | 显示全部楼层

emm
吧新创建一个名字叫我的电脑的文件夹

你就有了一台新的电脑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 17:35:36 | 显示全部楼层
Mike_python小 发表于 2020-5-30 11:29
emm
吧新创建一个名字叫我的电脑的文件夹

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 17:41:46 | 显示全部楼层
Mike_python小 发表于 2020-5-30 11:29
emm
吧新创建一个名字叫我的电脑的文件夹

https://fishc.com.cn/thread-171013-1-1.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 22:18:09 | 显示全部楼层
f1305147 发表于 2020-5-28 09:16
解释型语言也能打包啊?又没编译器。

当然能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 22:27:28 | 显示全部楼层

代码就完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 22:31:09 | 显示全部楼层
mzlhandsome 发表于 2020-5-27 18:00
还有 怎么把哪些文件处理成exe   就是那都能玩

去cmd打pip install pyinstaller。然后cd到python源文件的路径然后pyinstaller -F xxxx.py就会在当前文件夹下生成.exe文件了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 07:52:17 | 显示全部楼层
mzlhandsome 发表于 2020-5-27 18:52
我就是这样操作的啊

在末尾加个input()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 18:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表