Pyinstaller打包示例

win10 64位
vs2015
py3.7

目录结构

demo
    |–my_lib.py
    |–read.txt
    |–run.py
    |–to_pyd.py

文件介绍

保证代码的规范性,禁止导入未使用的包

my_lib.py

import pandas as pd


def fun1():
    print('\nthis is my_lib.fun1')
    data = {'a': [1, 2, 3], 'b': ['a', 'b', 'c']}
    df = pd.DataFrame(data)
    print(df)

    with open('read.txt')as f:
        a = f.readlines()
    print('read file:', a)
    return True

read.txt

a
b
c

run.py

from my_lib import fun1

fun1()
input('按任意键退出!')  # 防止程序结束后自动退出

to_pyd.py

from distutils.core import setup
from Cython.Build import cythonize


if __name__ == '__main__':
    # name随便写,py文件为要编译的文件
    setup(name='api_sign', ext_modules=cythonize('my_lib.py', compiler_directives={'language_level': 3}))

安装依赖包

pip install pyinstaller  # 4.4(3.6支持py2的最后版本)
pip install cython
pip install pandas
pip install pywin32  # 打包时报错,ModuleNotFoundError: No module named 'win32com'
pip install setuptools==44.0.0  # 执行exe报错,no module named 'pkg_resources.py2_warn'

编译打包

编译(可跳过)
# 编译为动态链接库,在当前目录生成pyd文件,防止破解
# 动态链接库.pyd(windows)、.so(linux)
python to_pyd.py build_ext --inplace  # 报错Unable to find vcvarsall.bat,安装py3.7对应的VS2015
  • Unable to find vcvarsall.bat:安装py3.7对应的VS2015,先解压下载的iso文件运行安装文件。

vs2015安装包:链接: https://pan.baidu.com/s/13YcVP-Qi1149dRYi9sa34Q 提取码: hi9c

打包
# 生成exe打包文件,结果文件在dist目录
pyinstaller -F --hidden-import=pandas --clean run.py

--hidden-import: 命名一个在脚本代码中不可见的导入。这个选项可以多次使用。文档
-–clean:在本次编译开始时,清空上一次编译生成的各种文件。

执行

  1. 收集相关静态文件,复制read.txt文件到dist目录下
  2. 双击运行.exe即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值