将python打包成exe,python的py文件打包成exe
Pip安装pyinstaller(大概就是这个,我忘了一点)。修改代码中关于路径的位置。当exe运行时,它会生成一个临时文件夹。__file__可以获取当前py脚本在临时文件夹中的路径,根据项目目录结构修改关于资源路径的代码。比如项目pyproj资源文件C:\pyproj\abc.txt,脚本文件C:\pyproj\pys.py,脚本中的路径C:\pyproj\abc.txt改为os.path.dir (file) abc.txt 。打包。Py-f c: \ pyproj \ pys.py,并生成pys.spec、build和dist文件夹(这两个文件夹可以删除,但实际上已经在dist中生成了exe,但运行时会报错,因为找不到资源,所以不使用资源也可以运行)。打开pys.spec.用记事本等打开pys.spec。内容大概是这样的:# -*-模式:python编码:UTF-8-*-block _ cipher=nonea=analysis([ Main . py ],pathex=[project path],binaries=[],data=[],hidden imports=[],hooks path=[],runtime_hooks=[],excludes=[],win _ no _ prefer _ redirects=False,win_private_assemblies=False,cipher=block_cipher,noarchive=False)pyz=PYZ(a.pure,a.zipped_data,cipher=block _ cipher)EXE=EXE(PYZ,a data=[]改为data=[(abc.txt , abc.txt)],意思是将项目路径下的abc.txt文件添加到目标exe中,运行时放在临时文件的根目录下,名称为abc.txt,文件夹相同。 如果有多个用逗号分隔的资源,datas=[(res/bg.jpg , res ),( exam.db ,.)],列表中有元组,左边是要添加的文件名(相对路径也可以),右边是复制到项目后的文件夹名。例如( res/bg.jpg , res )中的 res/bg.jpg 表示项目根目录下的res文件夹中有bg.jpg图片,这些图片将被复制到项目中并用作res文件夹。
( abc.txt ,.中的 exam.db )是项目根目录下的文件,而“.”表示根(注意点),即复制到项目中的根。复制资源。再次将上一步中使用的资源复制到pys.spec包所在的目录中。Py-F C: \ pyproj \ pys.spec注意是一个spec文件,build和dist文件夹会再次生成。exe是在dist中生成的,你可以把exe单独放在任何目录下。切实可行且无bug。注意:数据中的资源应该和pys.py在同一个目录中
另外,这个目录下最好只有一个py文件,否则运行打包的exe时可能会出现modulenotfound错误。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。