pan_jianpeng 发表于 2021-6-29 10:44

用pyinstaller打包多个py文件,闪退

情境是这样的:
我写了个main.py,里面import了同一目录下的manage.py
然后manage.py又调用了目录下MyImport子目录里面的MyExit.py

直接在PyCharm里面运行main.py是可以的,命令提示符运行也没问题

我测试了pyinstaller -F main.py,发现生成的exe闪退
,把main.spec中修改为a = Analysis(['main.py','manage.py','D:\\1\\3\\MyImport\\MyExit.py'],
然后用pyinstaller -D main.spec打包,完成之后,还是闪退

命令提示符测试提示:
PS D:\1\打包测试\dist> .\main
Traceback (most recent call last):
File "main.py", line 2, in <module>
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
File "manage.py", line 1, in <module>
AttributeError: module 'MyImport' has no attribute 'MyExit'
Failed to execute script main

如果我把所有的.py放到一个目录下,能正常打包,就是多个文件夹就GG。求救

求正确打包过程。Python小白求助。最好有视频,文字的话,我努力。。。

测试附件地址:https://ws28.cn/f/5rxsktrjyqw 复制链接到浏览器打开
里面是我修改完main.spec,并打包后的所有文件,谢谢大佬们!

pan_jianpeng 发表于 2021-6-29 15:55

伪装雨天 发表于 2021-6-29 15:44
刚下载了你的连接,你需要调用的py程序要放在同意目录下,把你MyImport里面的拿出来应该就行

是的,拿出来放同一目录是可以的。只是因为初学,刚好学到import一个文件夹中的所有.py文件,所以才出现这个问题。
在显示中,如果要打包成exe,是必须都放在同一目录下吗?那如果引用了第三方库,也是要拷贝过来还是该如何?

i9420 发表于 2021-6-29 12:28

我打包了很多次都是找不到模块或者模块丢失。。娘希匹的啊。恶心死。

pan_jianpeng 发表于 2021-6-29 12:38

Darkline 发表于 2021-6-29 12:24
一闪而过是不是没加-w    我一般是用pyinstaller -F -w -i 图标.ico源文件.py这个命令来打包的

不是,我能打包出exe,是exe打开时一闪而过

Autism55 发表于 2021-6-29 13:00

pan_jianpeng 发表于 2021-6-29 12:38
不是,我能打包出exe,是exe打开时一闪而过

调用时间函数啊,你肯定写的直接输出吧

超人强 发表于 2021-6-29 13:09

pan_jianpeng 发表于 2021-6-29 12:38
不是,我能打包出exe,是exe打开时一闪而过

那是因为你py文件运行报错了。比如缺少调取的文件。要在同一目录里的

johnMC 发表于 2021-6-29 13:58

建议先用录屏,然后一帧帧的看,有没有报错,这个一闪而过大概率是包的问题,--hidden-import 是个好东西{:1_918:}

伪装雨天 发表于 2021-6-29 15:08

闪退是嘛,不能正常打开?

伪装雨天 发表于 2021-6-29 15:12

有几个比较常见的问题,你试着路径不要有中文命再试试,或者还有没有其他类似dat文件需要用到,建议你先用-c打包用cmd运行,没问题了再打包成exe

pan_jianpeng 发表于 2021-6-29 15:14

超人强 发表于 2021-6-29 13:09
那是因为你py文件运行报错了。比如缺少调取的文件。要在同一目录里的

是的,放同一目录下测试是没有问题的。就是想知道,如果我把py文件放到了子目录,要打包时该如何操作?还是说不能这样操作?

pan_jianpeng 发表于 2021-6-29 15:15

Autism55 发表于 2021-6-29 13:00
调用时间函数啊,你肯定写的直接输出吧

我设计的函数需要输入内容input的,所以应该不是立刻输出然后关闭的情形
页: [1] 2
查看完整版本: 用pyinstaller打包多个py文件,闪退