Pyinstaller打包python代码
2016-06-14 16:07
525 查看
本文参考https://pythonhosted.org/PyInstaller/spec-files.html
1. 安装pyinstaller,通过pip3 install pyinstaller
2. 编写spec文件:
以process_manage工程为例,创建了process_manage.spec文件,前面的文件名可以随意取,后缀必须为spec,具体文件内容如下:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['/home/iot/process_manage/start_process_manage.py'],
pathex=['/home/iot/ennis/start_process_manage'],
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
a.binaries = a.binaries + [('librz.so.0','/home/iot/lib/librz.so.0.0.0','BINARY')]
a.binaries = a.binaries + [('libsha1.so','/home/iot/lib/libsha1.so','BINARY')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='start_process_manage',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(
[('proc.json','/home/iot/intf_proxy_svn/common/proc.json','DATA')],
strip=None,
upx=True,
name='common')
['/home/iot/process_manage/start_process_manage.py'],工程的启动文件,绝对路径或spec文件的相对路径都行;
pathex=['/home/iot/ennis/start_process_manage'],编译生成后存放的路径,在此路径下会生成一个dist文件夹,可执行文件在dist文件夹下;
datas=None;工程的附加文件,此工程不需要设为None,但openapi运行的时候会去lib64/python3.3/_import_failed目录下查找import_failed.map文件,所以这里要修改为:datas=[('/usr/lib64/python3.3/_import_failed/import_failed.map','lib64/python3.3/_import_failed')];
a.binaries = a.binaries + [('librz.so.0','/home/iot/lib/librz.so.0.0.0','BINARY')]此处为工程运行依赖的c语言库,当编译过后,运行该执行文件,会提示找不到librz.so.0,在编译环境中找到该库的绝对位置,按照此语句添加,其他依赖库按照同样方式查找添加;
coll= COLLECT 将配置文件拷贝到创建的目录下;
其他的设置项不需改动。
3. 在spec文件所在的目录运行pyinstaller prcess_manage.spec(自己编写的spec文件),运行完成后,会在spec配置的pathex目录下生产dist文件,可执行程序就在dist目录下。
1. 安装pyinstaller,通过pip3 install pyinstaller
2. 编写spec文件:
以process_manage工程为例,创建了process_manage.spec文件,前面的文件名可以随意取,后缀必须为spec,具体文件内容如下:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['/home/iot/process_manage/start_process_manage.py'],
pathex=['/home/iot/ennis/start_process_manage'],
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
a.binaries = a.binaries + [('librz.so.0','/home/iot/lib/librz.so.0.0.0','BINARY')]
a.binaries = a.binaries + [('libsha1.so','/home/iot/lib/libsha1.so','BINARY')]
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='start_process_manage',
debug=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(
[('proc.json','/home/iot/intf_proxy_svn/common/proc.json','DATA')],
strip=None,
upx=True,
name='common')
['/home/iot/process_manage/start_process_manage.py'],工程的启动文件,绝对路径或spec文件的相对路径都行;
pathex=['/home/iot/ennis/start_process_manage'],编译生成后存放的路径,在此路径下会生成一个dist文件夹,可执行文件在dist文件夹下;
datas=None;工程的附加文件,此工程不需要设为None,但openapi运行的时候会去lib64/python3.3/_import_failed目录下查找import_failed.map文件,所以这里要修改为:datas=[('/usr/lib64/python3.3/_import_failed/import_failed.map','lib64/python3.3/_import_failed')];
a.binaries = a.binaries + [('librz.so.0','/home/iot/lib/librz.so.0.0.0','BINARY')]此处为工程运行依赖的c语言库,当编译过后,运行该执行文件,会提示找不到librz.so.0,在编译环境中找到该库的绝对位置,按照此语句添加,其他依赖库按照同样方式查找添加;
coll= COLLECT 将配置文件拷贝到创建的目录下;
其他的设置项不需改动。
3. 在spec文件所在的目录运行pyinstaller prcess_manage.spec(自己编写的spec文件),运行完成后,会在spec配置的pathex目录下生产dist文件,可执行程序就在dist目录下。
相关文章推荐
- python的list列表学习笔记
- Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
- caffe预测、特征可视化python接口调用(caffe python接口调用示例)
- python 有序字典OrderedDict
- python新手中常见疑惑及解答
- Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
- 全面了解Python的getattr(),setattr(),delattr(),hasattr()
- 浅谈python中的getattr函数 hasattr函数
- mac安装opencv+python
- Python 文件处理方法详解
- python url解析
- python基础之模块(一)
- numpy入门学习笔记
- python循环嵌套遍历前后关联的select下拉框
- python安装NumPy
- 深入解析Python中的线程同步方法
- python os模块
- 用PDB库调试Python程序
- python 字符串 大小写转换
- [教程]Python 求解任意闭区间的所有素数