使用Cython把py转成pyd文件
2019独角兽企业重金招聘Python工程师标准>>>
文章图片
介绍 对于python这门语言来说,本身没有很好的加密方法,就算是pyc和pyo字节码文件也可以很轻松的用软件反编译出来。推荐反编译软件是Easy Python Decompiler。软件的下载地址是:https://sourceforge.net/projects/easypythondecompiler/
可以把pyc和pyo字节码文件全部反编译成原来的py文件。所以要想加密py文件有的办法是把py文件用cython转成c语言的文件然后再用编译成pyd文件,这样就可以很好的保护源代码。
软件的安装 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版本的编译器编译,不可以使用mingw32
来编译,因为python本身就是用vs来编译的。那么如果是3.0以上的版本,就会用vs2010以上的版本,要安装对应的版本。因为使用cython需要c编译器来编译代码。如果使用的2.7的版本,微软提供了专门用来编译python扩展库的工具。地址:https://www.microsoft.com/en-us/download/details.aspx?id=44266
如果你已经安装了vs2008的话就可以直接使用vs2008.
Cython安装直接用pip安装获取下载安装
pip install cython
下载完后要想使用微软的工具,就要升级setuptools工具,只有新版本的setuptools才可以识别到这个工具。更新命令:pip install setuptools -U
文章图片
就会卸载以前的版本安装最新的脚本。
实例 首先要写一个配置文件来使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")
【使用Cython把py转成pyd文件】)
以上的数据写在一个文件里面。
如果是对整个文件夹加密,要在文件夹里面放一个__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
在一个文件里面添加其它文件的引用,然后编译成一个文件。
其它实例以后再补充
转载于:https://my.oschina.net/u/2000932/blog/840917
推荐阅读
- 死结。
- Y房东的后半生14
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- Eddy小文
- 人如果没梦想,和咸鱼有什么区别(自媒体时代把握住就能咸鱼翻身)
- iOS中的Block