Python的脚本文件是开源的,量化策略的安全性没有保障。因此需要保护源码。那么要对Python代码进行混淆、加密保护。

混淆代码,我准备使用pyminifier。而加密处理,就比较麻烦。

Python有py、pyc、pyw、pyo、pyd等文件格式。

其中,pyc是二进制文件。但很容易被反编译。

pyw也不行,只是隐藏命令行界面而已,可以作为入口脚本。

pyo和pyc差不多,也容易被反编译。

最后剩下pyd格式。pyd格式是D语言(C/C++综合进化版本)生成的二进制文件,实际也会是dll文件。该文件目前位置没找到可以被反编译的消息,只能被反汇编。Sublime text编辑器也是使用该格式。

Python的py文件生成pyd文件步骤如下。

1、安装Cython

可以使用pip命令安装Cython。

pip install cython

2、处理vcvarsall.bat

若不处理,可能会出现“Unable to find vcvarsall.bat”错误。

安装Cython之后,还需要指定vcvarsall.bat的位置。

vcvarsall.bat是VC编译Python环境的文件之一。而vcvarsall.bat需要安装VC For Python2.7。我的Python是2.7,刚好可以使用这个。至于3.x版本不知道微软更新了没有。

安装成功之后,再修改设置。让Cython可以找到vcarsall.bat。此处有两种方案。

我采用方案1,亲测可用。方案2未测试,看似可用。

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

这里有一个坑。程序所在的目录路径不能包含中文文字。所以我在E盘下创建一个test文件夹,用于放置要处理的python文件。

简单写了一个测试文件(命名为test.py):

#coding:utf-8

defhello():

print("Hello world")

input("")

在该目录下,再新建一个py文件(命名为setup.py):

fromdistutils.core importsetup

fromCython.Buildimportcythonize

setup(

name ='Hello world app',

ext_modules =cythonize("test.py"),

)

接着,再打开cmd,跳到该目录并执行如下命令:

python setup.py build_ext --inplace

最终生成pyd文件

其中,build是生成过程使用到的临时文件。test.c也是临时文件,可以打开看看传说中的D语言代码。

test.pyd是我们所需的文件。

pyd文件可以像平常一样使用import引入模块的方式正常使用。

后来,我尝试使用py2exe打包pyd文件。还需要创建一个入口脚本(命名为index.py):

importtest

if__name__=="__main__":

test.hello()

为了方便打包,我重新创建一个目录。把index.py和test.pyd复制到该目录。

如何安装和使用py2exe这里我就不说了,自行百度一下。

分别用test.pyd和未处理的test.py打包效果如下:

1)用test.pyd

直接可以在index.exe对应的位置找到该文件。

2)用test.py

在该目录下没有test.py文件。该文件在library.zip中。

测试结果,用py2exe可以正常使用pyd文件。

ps:若用Cython出现如下错误,说明文件的编号和python脚本设置 #coding设置的编码不一致。保存一致编码即可解决该问题。

Decoding error, missing or incorrect coding= at top of source (cannot decode with encoding 'utf8': invalid start byte)

python import文件pyd_Python生成pyd文件相关推荐

  1. python调用pyd_Python生成pyd文件

    Python的脚本文件是开源的,量化策略的安全性没有保障.因此需要保护源码.那么要对Python代码进行混淆.加密保护. 混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Pytho ...

  2. Python的py文件生成pyd文件

    使用 py2exe 打包 Python 程序 Python的py文件生成pyd文件 源代码: git@gitee.com:menglingzhi/cython_test.git 另外python打包w ...

  3. python的pyd文件_Python 加密之 生成pyd文件

    混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Python有py.pyc.pyw.pyo.pyd等文件格式. 其中,pyc是二进制文件.但很容易被反编译. pyw也不行,只是隐藏 ...

  4. 关于win7下编译pyx文件生成pyd文件供Python调用

    在运行python程序的时候,会发现有些模块不是用Python语言编写的,而是用C/C++编写的,主要是考虑到C/C++编写的模块相对Python脚本语言编写的模块执行速度更快.那么在调用这些由C/C ...

  5. python在内存中生成Zip文件!

    python在内存中生成Zip文件! - 天真的好蓝啊 - 博客园 python在内存中生成Zip文件! import zipfile import StringIO class MemoryZipF ...

  6. 旋转狗头:Python如何读取STL文件,生成STL文件预览图(缩略图)之进化,动态旋转Gif图

    之前的文章<Python如何读取STL文件,生成STL文件预览图(缩略图)>实现了将STL文件读取加载.绘制保存为某个角度下2D的png图片,作为预览图(缩略图).但是3D转2D,预览就丢 ...

  7. Python:pyinstaller如何将一个项目的.py和相关资源文件打包生成.exe文件

    前言 写这篇博文真属于意外,因为小编不是以学术为目的的,而仅仅是以讨女朋友喜欢为目的,所以文中略有狗粮.撇开这些,相信大家找到为了找到一个可行方案已经寻寻觅觅良久,本文或许便是你的"真命天子 ...

  8. 将pyx文件编译成pyd文件(很多坑,已解决)

    项目场景: Faster R-CNN项目,将pyx文件编译成pyd文件(很多坑,请注意) 项目环境 python 3.6 – conda的虚拟环境 TensorFlow 1.15.0 win 10 问 ...

  9. svn增量打包部署_利用svn的补丁文件打包生成增量文件

    下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...

最新文章

  1. VS2015 Cordova实现WebView加载页面进度条(Android)
  2. C#游戏开发快速入门2.2改变游戏对象的状态
  3. Mac OS Terminal 几个快捷键
  4. AB1601中如何实现比较精准NOP延时
  5. Windows Server 2008远程桌面端口更改方法
  6. Scala变量的声明和赋值
  7. 微服务和分布式学习专栏
  8. JDK 13:什么是AggressiveOpts?
  9. android 获取图片主色调
  10. 40 FI配置-财务会计-固定资产-组织结构-创建屏幕格式规则
  11. ARM公司的Cortex-M0概况介绍
  12. html input type=quot;filequot;,input[type='file']默认样式
  13. 【matlab】数值计算实现电路仿真
  14. PostgreSQL导入导出CSV
  15. 教你如何认汽车标志(转)
  16. Flutter—— 仿自如APP裸眼3D效果
  17. html 倒计时特效,JS节日倒计时特效(精确到毫秒)
  18. 每日必读DZone news - 2022年2月十大DZone文章
  19. 当AD(Altium Designer)画PCB时Ctrl+H快捷键无法选中连线时的解决办法
  20. Mybatis 批量插入数据 SQL

热门文章

  1. 一文了解各种高精度室内定位技术
  2. msgsnd()函数 msgrcv()函数
  3. 网络江湖演义(一) ×××士刘韧 王泽宾
  4. 【Linux软件推荐】Linux版飞书已上线
  5. Java中合法的关键词_优秀程序员必须掌握的java中50个关键字
  6. 【Eclipse来解决JSON里的注释报错(红叉)Expected value at 1:0 -------】
  7. C语言实现四舍五入后保留最后2位小数
  8. 初学Java的练手题
  9. 同城预约洗车服务小程序同城洗车上门洗车门店优惠券会员预约洗车程序
  10. 手记系列之六 ----- 分享个人使用kafka经验