pyinstaller打包TVM/RPC相关脚本及DSO文件
生活随笔
收集整理的这篇文章主要介绍了
pyinstaller打包TVM/RPC相关脚本及DSO文件
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
0. 创建anaconda env
numpy中MKL/BLAS库占用很大空间。使用如下命令创建新环境,并替换numpy。
conda create -n extranumpy python=3.8.12
conda activate extranumpy
conda install -c conda-forge numpy
pip install pyinstaller
1. 测试用python脚本
#! /usr/bin/python3.6
# -*- coding:utf-8 -*-
# test_py.py
import tvm
import sys
import tvm.rpc
print('test_py.py will run...')
ip_addr, ip_port = sys.argv[1].split(':')
remote = tvm.rpc.connect(ip_addr, int(ip_port))
add_func = remote.get_function('rpc.test_add')
print(add_func(10, 20))
2. 待打包的文件
- test_py.py
- libtvm_runtime.so
- tvm: init.py _ffi contrib parser rpc runtime support.py error.py
其中,tvm文件夹中的python脚本删除不需要的子目录,只保留如上所示依赖项。
3. 修改spec文件
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['test_py.py'],
pathex=['/data/huangxiaofeng/work/vsext_example/py_package'],
binaries=[('libtvm_runtime.so', '.')],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
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.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='test_py',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
说明:由于依赖于libtvm_runtime.so,故将该so文件放置在python测试脚本同一级目录,这样运行时就可以找到并加载该so文件。
进一步参考:使用pyinstaller将图片,文件等打包到exe依赖文件的处理方法
总结
以上是生活随笔为你收集整理的pyinstaller打包TVM/RPC相关脚本及DSO文件的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 大闸蟹的项目分析——CSDN APP
- 下一篇: 【小技巧】Windows 小技巧