python文件批量生成pyd文件(pthon隐藏源码)

       Python有py、pyc、pyw、pyo、pyd等文件格式,其中除py其他格式起到了不暴露源码的作用,相当于c语言中的动态库。Python的脚本文件是开源的,若直接发布桌面软件问题很严重。因为这是公司的产品,需要保护源码。那么要对Python代码进行混淆加密保护。Python有py、pyc、pyw、pyo、pyd等文件格式。其中,pyc是二进制文件。但很容易被反编译。pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。pyo和pyc差不多,也容易被反编译。最后剩下pyd格式。pyd格式是D语言(C/C++综合进化版本)生成的二进制文件,实际也会是dll文件。该文件目前位置没找到可以被反编译的消息,只能被反汇编。Sublime text编辑器也是使用该格式。本文则就如何将py文件生成pyd文件并进行调用的具体过程进行介绍。

一、安装Cython

     进入python报的安装目录,输入pip命令进行安装Cython,具体命令代码如下:

pip install Cython

   执行命令后的结果如下所示:本文选择的是python 3.7 环境,执行完毕后,则安装Cython成功。

  

二、创建工作目录并生成pyd文件

1.创建src文件目录

本文中在“1封装Python代码”目录下,创建src源码文件夹目录,其项目结构如下图所示

2.创建需要隐藏源码的py文件,并书写代码

    本文中创建名称为“personMana.py”的文件,该文件内部封装了名称为“personMana”的类,该类中定义了两个方法名称分别为“say()”函数和“sayTest()”函数.具体代码如下:

class personMana:
    def __init__(self):
        print("")
    #自定义函数
    def say(self,lanage):
        _lanage="您输入的内容是-》"+str(lanage)
        return  _lanage
    def sayTest(self,msg, name):
        _res=msg+name
        return _res

3.书写将py文件生成pyd文件的代码

    创建名称为“setup.py"来存储py文件生成pyd文件的代码。     本文主要将src目录下的所有py文件生成pyd文件,由于本文只生成personMana.py文件,而“setup.py”文件不需要生成,具体代码实现如下:

# setup.py
import shutil


from distutils.core import setup
from Cython.Build import cythonize
import os
directory = '.'  # 设置源代码所在的目录,这里设置为当前目录
to_directory='../app/'#设置将需要调用的pyd文件拷贝的应用目录下
# 获取该目录下所有的文件名
sources = [os.path.join(directory, file)
           for file in os.listdir(directory)
           if file.endswith('.py') and  file not in ["main.py"]  and file not in ["setup.py"]]
setup(
    ext_modules=cythonize(sources)
)

#复制文件到应用目录
exesource = [os.path.join(directory, file)
           for file in os.listdir(directory)
           if file.endswith('.pyd')]

for a in exesource:
    fpath, fname = os.path.split(a)
    #将生成的pyd文件拷贝到应用的目录中
    shutil.copy(a, to_directory + fname.replace('.cp37-win_amd64',''))          # 复制文件









4.运行setup.py文件,得到需要的结果

第一种运行方式:

在PyCharm Community Edition 2021.2.1工具中运行,首先配置形参其命令如下:

build_ext --inplace

接着选择Python解释器

第二种运行方式

通过命令进行运行,命令如下

python setup.py build_ext --inplace

5.在app目录下建立main.py文件调用该类

具体代码如下

from  personMana import *

if __name__ == '__main__':
     _personMana=personMana()
     ce=_personMana.say("张三")
     print(ce)
     ce = _personMana.sayTest("你好","张三")
     print(ce)

运行结果如下

三、具体代码连接如下:

python文件批量生成pyd文件源码资源-CSDN文库

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机软件大师

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值