我将以下代码打包成一个带cmd的exe,但当运行exe时只是弹了一下cmd就关闭了,并没有实际运行
而在没打包之前是可以正常运行的,我想知道这是为什么,以及我应该怎么更正
import psutil,os,time
class abc():
def __init__(self):
self.main()
def main(self):
print('开始清理')
time.sleep(0.5)
name='EXCEL.EXE'
pids = psutil.pids()
for pid in pids:
p = psutil.Process(pid)
if p.name() == name:
cmd = r'taskkill /F /IM '+ name
os.system(cmd)
time.sleep(1)
print('excel清理完毕')
if __name__=='__main__':
a=abc()
#a.main()
你可以截图cmd看一下,应该是缺少模块导致的,参考下面方法:
打包过程中难免会遇到问题,一般都会遇到缺少模块的问题,比如,在对myscript.py打包时会报错ModuleNotFoundError,缺少xlrd, xlwt等模块,一般来说可以按照下面三个步骤进行解决:
1.Pyinstalled会从本地的环境路径下找需要的模块,例如python的包都放在site-packages目录下,因此,Pyinstalled可以直接从该目录下获取需要的模块。如果本地也缺少该模块,先通过pip命令安装。例如:
pip install xlrd
pip install xlwt
2.如果你需要的模块不在site-packages,而在你指定的目录下,那打包时你可以通过-P DIR参数指定,其中DIR为你需要的模块路径:
pyinstaller -F -w -p DIR myscript.py
-p命令允许指定多个模块路径,可以用:分隔,或者多次使用这个参数,像这样:pyinstaller -p DIR1:DIR2:DIR3 myscript.py或pyinstaller -p DIR1 -p DIR2 -p DIR3 myscripy.py
你采纳的答案真的对嘛.......
打包成exe执行窗口一闪而过是因为你写的程序已经执行完毕,所以窗口关掉了
你需要在源代码结尾出添加一行“raw_input("Press ")”,这样执行exe后窗口会暂停住,直到你按下回车后关闭