使用Cython把py转成pyd文件

介绍

对于python这门语言来讲,自己没有很好的加密方法,就算是pyc和pyo字节码文件也能够很轻松的用软件反编译出来。推荐反编译软件是Easy Python Decompiler。软件的下载地址是:https://sourceforge.net/projects/easypythondecompiler/html

能够把pyc和pyo字节码文件所有反编译成原来的py文件。因此要想加密py文件有的办法是把py文件用cython转成c语言的文件而后再用编译成pyd文件,这样就能够很好的保护源代码。python

软件的安装

Cython准确说Cython是单独的一门语言,专门用来写在Python里面import用的扩展库。实际上Cython的语法基本上跟Python一致,而Cython有专门的编译器先将 Cython代码转变成C(自动加入了一大堆的C-Python API),而后使用C编译器编译出最终的Python可调用的模块。官方的网址:http://cython.org/#documentation工具

首先得清楚本身安装的python的版本,若是是2.7的版本,那么对应的vs的编译版本就是vs2008,全部的python扩展库都要用同一种vs版本的编译器编译,不能够使用mingw32ui

来编译,由于python自己就是用vs来编译的。那么若是是3.0以上的版本,就会用vs2010以上的版本,要安装对应的版本。由于使用cython须要c编译器来编译代码。若是使用的2.7的版本,微软提供了专门用来编译python扩展库的工具。地址:https://www.microsoft.com/en-us/download/details.aspx?id=44266加密

若是你已经安装了vs2008的话就能够直接使用vs2008.spa

Cython安装直接用pip安装获取下载安装.net

pip install cythonhtm

下载完后要想使用微软的工具,就要升级setuptools工具,只有新版本的setuptools才能够识别到这个工具。更新命令:pip install setuptools -Uip

就会卸载之前的版本安装最新的脚本。utf-8

实例

首先要写一个配置文件来使cython来执行把py编译成pyd文件,最好把要编译的py文件都换成pyx为扩展名的文件。

参考资料:http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html

假设这个文件叫setup.py

# -*- coding: utf-8 -*-

#使用微软的那个工具要使用setuptools模块

import setuptools

from Cython.Build import cythonize

from setuptools.extension import Extension

# mit/log.py是文件的位置,好比某个文件夹。mit.log是import的时候模块的名字

extensions = [Extension('mit.log', ['mit/log.py'])]

 

setuptools.setup(

    # ext_modules = cythonize(extensions)

    ext_modules = cythonize("mit/*.py")

 

)

以上的数据写在一个文件里面。

若是是对整个文件夹加密,要在文件夹里面放一个__init__.py

主要的话是使用import setuptools来获取vs编译器版本。

能够选择那些文件编译成pyd,也能够对一个目录进行编译。而后执行命令好比  setup.py build_ext --inplace 以后就会生成pyd文件。

若是你想把全部的pyx文件都合成一个文件的话,能够参考一下的方法。

http://stackoverflow.com/questions/19646985/making-one-pyd-for-a-set-of-files-with-cython

在一个文件里面添加其它文件的引用,而后编译成一个文件。

其它实例之后再补充

相关文章
相关标签/搜索