zoukankan      html  css  js  c++  java
  • Python加密成.so或dll

    Python加密

    如何封装Python代码,让别人方便调用,同时又能起到加密的作用,本文介绍如何封装成so文件和dll文件以及调用方式

    • 首先需要配置环境 安装Cython gcc

    Linux下的.so文件

    • 创建要封装的文件mytest.py
    import datetime
    class DataCenter():
        def gettime(self):
            print(datetime.datetime.now())
        def write_data(self):
            print("hello XiaoBei!")
    
    • 创建调用文件 so_test.py
    from mytest import DataCenter
     
    data = DataCenter()
    data.gettime()
    data.write_data()
    

    运行so_test.py,证明程序正常

    • 创建打包文件 setup.py
    from distutils.core import setup
    from Cython.Build import cythonize
    #[]内是要打包的文件名,也可多个文件
    setup(ext_modules = cythonize(["mytest.py"]))
    
    • 执行python3 setup.py build_ext

    在当前目录下生成build文件夹和mytest.c文件,.so文件就在build文件夹内

    • 将so_test.py文件放到so目录下,运行,即可得到结果

    Windows下将Python封装成pyd文件

    pyd就是dll

    • mytest.py 和dll_test.py和上面一样
    • 创建setupDll.py
    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    from distutils.core import setup
    from Cython.Build import cythonize
    from distutils.extension import Extension
    
    def main():
        # 这里为文件名 可以增加多个Extension('  ', ['  '])
        extensions = [Extension('mytest', ['mytest.py'])]
        setup(ext_modules=cythonize(extensions))
    
    if __name__ == '__main__':
        main()
    
    • 在pycharm的terminal下输入Python setupDll build_ext,得到pyd文件

    • 在build文件夹下得到.pyd文件调用方式不变
    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    #如果不想改变pyd路径,则需要在dll_test.py中加入:
    import sys
    sys.path.append('./build/lib.win-amd64-3.7/')
    from mytest import DataCenter
    def main():
        data = DataCenter()
        data.gettime()
        data.write_data()
    
    if __name__ == '__main__':
        main()   
    
    • 运行得到结果
  • 相关阅读:
    Zookeeper 集群安装
    Jexus部署.Net Core项目
    NetCore1.1+Linux部署初体验
    Linux初学
    高可用Redis服务架构分析与搭建
    前端开发JS白板编程题目若干
    Javascript中的Microtask和Macrotask——从一道很少有人能答对的题目说起
    ES6原生Promise的所有方法介绍(附一道应用场景题目)
    HTML的iframe标签妙用
    漫谈PHP代码规范
  • 原文地址:https://www.cnblogs.com/wangxiaobei2019/p/12523843.html
Copyright © 2011-2022 走看看