当前位置:   article > 正文

多个python文件打包成可执行的exe文件_python 将多个文件打包exe -hiddenimport

python 将多个文件打包exe -hiddenimport

python项目(包含多个python文件)打包成exe文件
首先,我的文件结构是这样的:
在这里插入图片描述
UTool是整个python项目文件,里面包含packs文件夹,rcat_images文件夹,主函数main.py
其中packs里面包含若干py文件,rcat里面是图片文件
在这里插入图片描述
此文是用pyinstaller完成的。
首先安装pyinstaller,pip install pyinstaller

1.将所有文件放于主文件夹下(这里是UTool),主文件夹里面可包含多个文件和文件夹

2.打开cmd,切换到UTool路径下,输入:
先在控制台中输入 chcp 65001(为了解决编码问题)
然后输入:pyi-makespec main.py
生成main.spec文件

制作spec文件

 #-*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['main.py',
'D:\\Study\\pythonProject\\UTool\\packs\\__init__.py',
'D:\\Study\\pythonProject\\UTool\\packs\\auto_open.py',
'D:\\Study\\pythonProject\\UTool\\packs\\clike.py',
'D:\\Study\\pythonProject\\UTool\\packs\\code_reader.py',
'D:\\Study\\pythonProject\\UTool\\packs\\complexity_analyse.py',
'D:\\Study\\pythonProject\\UTool\\packs\\control.py',
'D:\\Study\\pythonProject\\UTool\\packs\\csharp.py',
'D:\\Study\\pythonProject\\UTool\\packs\\gdscript.py',
'D:\\Study\\pythonProject\\UTool\\packs\\go.py',
'D:\\Study\\pythonProject\\UTool\\packs\\java.py',
'D:\\Study\\pythonProject\\UTool\\packs\\javascript.py',
'D:\\Study\\pythonProject\\UTool\\packs\\js_style_language_states.py',
'D:\\Study\\pythonProject\\UTool\\packs\\js_style_regex_expression.py',
'D:\\Study\\pythonProject\\UTool\\packs\\lua.py',
'D:\\Study\\pythonProject\\UTool\\packs\\objc.py',
'D:\\Study\\pythonProject\\UTool\\packs\\php.py',
'D:\\Study\\pythonProject\\UTool\\packs\\print_error.py',
'D:\\Study\\pythonProject\\UTool\\packs\\python.py',
'D:\\Study\\pythonProject\\UTool\\packs\\Resource_Calculate.py',
'D:\\Study\\pythonProject\\UTool\\packs\\ruby.py',
'D:\\Study\\pythonProject\\UTool\\packs\\rubylike.py',
'D:\\Study\\pythonProject\\UTool\\packs\\scala.py',
'D:\\Study\\pythonProject\\UTool\\packs\\script_language.py',
'D:\\Study\\pythonProject\\UTool\\packs\\swift.py',
'D:\\Study\\pythonProject\\UTool\\packs\\ttcn.py'],
             pathex=['D:\\Study\\pythonProject\\UTool'],
             binaries=[],
             datas=[('D:\\Study\\pythonProject\\UTool\\rcat_images','rcat_images')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=['matplotlib','numpy','pandas'],
             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.scripts,
          [],
          exclude_binaries=True,
          name='main',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='main')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

(1)第一个列表中写所有的py文件,与main一个文件夹的可以直接写文件名,不一个文件夹的需要写完整的文件路径。
(2)datas是中的元素是tuple类型,tuple的第一个参数是python项目中data文件(非py文件)的路径,
第二个参数是data在exe中保存此资源的文件夹名,要和项目中的文件夹名相同
(3)excludes里面可以填写不用的包名,这样打包以后会小点,例如:matplotlib等
(4)因为main.py是入口文件,所以被调用的其他py文件的当前路径都是main.py文件的当前路径。所以在源代码中就一定要把main.py放到最外层的项目文件夹中。在main.py中饮用了其他py文件,main.py文件要能在当前路径下找到其他文件。

如果出现:“ImportError: No module named 'sklearn.utils.cython_blas”
缺少包,加入就行。在hiddenimports中加入这个包
hiddenimports=[‘cython’, ‘sklearn’, ‘sklearn.utils._cython_blas’ ],

3.用配置好的spec文件制作exe:
pyinstaller -D main.spec
使用-D制作出来的exe比使用-F的快很多,因为-F把所有dll文件都打包到一个exe中了(-F这时候exe会很大,加载变慢,推荐-D)。

4.生成后的exe在dist的main中
在这里插入图片描述
5.点击运行exe即可

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/181519
推荐阅读
相关标签
  

闽ICP备14008679号