python填坑之将py文件转成pyd加密后再打包成exe

偶尔用python写点小程序,需要打包成exe,但又不想泄漏源码,于是乎找到了转成pyd再用pyinstaller进行打包,此间踩坑无数,特此记录

1、安装Cython和pyinstaller

将py转成pyd文件需要用到Cython库,打包exe用的是pyinstaller,通过以下命令安装即可

pip install Cython
pip install pyinstaller
2、安装vs

坑1:Unable to find vcvarsall.bat

Pyhon不同的版本需要安装相应的vs才能顺利将py转成pyd,否则会报 “Unable to find vcvarsall.bat” 错误,在令行窗口中直接输入python即可查看安装python信息:
查看安装python信息
我这里安装的是Python 3.8.0,相应的vs版本是【MSC v.1916】,下面是vs对应版本信息,所以我这里需要安装的是Visual Studio 2017 version 15.9.0 到 Visual Studio 2017 version 15.9.11 这几个中的任意一个版本

AbbreviationProduct name [Visual Studio version]VC ++ version_MSC_VER
2019 Update 5Visual Studio 2019 version 16.5.114.251925
2019 Update 4Visual Studio 2019 version 16.4.014.241924
2019 Update 3Visual Studio 2019 version 16.3.214.211923
2019 Update 2Visual Studio 2019 version 16.2.314.211922
2019 Update 1Visual Studio 2019 version 16.1.214.211921
2019Visual Studio 2019 version 16.0.014.201920
2017 Update 9Visual Studio 2017 version 15.9.1114.161916
2017 Update 9Visual Studio 2017 version 15.9.714.161916
2017 Update 9Visual Studio 2017 version 15.9.514.161916
2017 Update 9Visual Studio 2017 version 15.9.414.161916
2017 Update 9Visual Studio 2017 version 15.9.114.161916
2017 Update 9Visual Studio 2017 version 15.9.014.161916
2017 Update 8Visual Studio 2017 version 15.8.014.151915
2017 Update 7Visual Studio 2017 version 15.7.514.141914
2017 Update 7Visual Studio 2017 version 15.7.314.141914
2017 Update 7Visual Studio 2017 version 15.7.214.141914
2017 Update 7Visual Studio 2017 version 15.7.114.141914
2017 Update 6Visual Studio 2017 version 15.6.714.131913
2017 Update 6Visual Studio 2017 version 15.6.614.131913
2017 Update 6Visual Studio 2017 version 15.6.414.131913
2017 Update 6Visual Studio 2017 version 15.6.314.131913
2017 Update 6Visual Studio 2017 version 15.6.214.131913
2017 Update 6Visual Studio 2017 version 15.6.114.131913
2017 Update 6Visual Studio 2017 version 15.6.014.131913
2017 Update 5Visual Studio 2017 version 15.5.714.121912
2017 Update 5Visual Studio 2017 version 15.5.614.121912
2017 Update 5Visual Studio 2017 version 15.5.414.121912
2017 Update 5Visual Studio 2017 version 15.5.314.121912
2017 Update 5Visual Studio 2017 version 15.5.214.121912
2017 Update 4Visual Studio 2017 version 15.4.514.111911
2017 Update 4Visual Studio 2017 version 15.4.414.111911
2017 Update 3Visual Studio 2017 version 15.3.314.111911
2017 Update 2Visual Studio 2017 version 15.214.101910
2017 Update 1Visual Studio 2017 version 15.114.101910
2017Visual Studio 2017 version 15.014.101910
2015 Update 3Visual Studio 2015 Update 3 [14.0]14.01900
2015 Update 2Visual Studio 2015 Update 2 [14.0]14.01900
2015 Update 1Visual Studio 2015 Update 1 [14.0]14.01900
2015Visual Studio 2015 [14.0]14.01900

我这里已下载好2017的,如有需要可以直接取:链接: https://pan.baidu.com/s/1VRMwwtWGlUZLfPDcmW48ng 提取码: yd9e

这里有两个文件需要安装,先安装 vs_professional__2017.exe,再安装 visualcppbuildtools_full.exe

下图为安装vs_professional__2017.exe界面,这里直接点击右下角的安装即可,其他的不用勾选
安装vs

3、转pyd

创建一个setup.py,内容如下:

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

setup(
    ext_modules = cythonize(["add.py"]), # add.py 为需要打包的文件名,不能包含中文
)

在令行窗口中输入以下命令来生成pyd文件:

python setup.py build_ext --inplace

按回车后,会生成 add.cp38-win_amd64.pyd,修改文件名为add.pyd,即删除多的【.cp38-win_amd64】

注意:因系统不同这一部分可能不一样

4、打包exe

坑2:ValueError: script ‘C:\Users\de\Desktop\add\add.pyd’ not found

创建引导文件 index.py,这里面需要import引用的模块,如果直接打包pyd文件会报错:【ValueError: script ‘C:\Users\de\Desktop\add\add.pyd’ not found】

index.py 内容如下,除了引用的内容外,还要import生成的add.pyd文件

import urllib.request 
import http.cookiejar
from urllib import parse
import json,yagmail,datetime
import tkinter as tk 
from tkinter.filedialog import *
import add #注意修改为自己的文件名

最后通过以下命令进行打包:

pyinstaller.exe -Fw .\index.py -i .\ico\f.ico

pyinstaller参数说明:-Fw,是创建单个exe文件,并隐藏命令行窗口,-i是指定ico图片

坑3:ico图标不生效

pyinstaller经常在打包时会发现ico不生效,这是因为exe需要多个尺寸的ico文件,我的ico目录中32X32,48X48和64X64的3个尺寸,只需指定其他一个文件名即可

以此记之,慢慢填坑路

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值