python import文件pyd_Python生成pyd文件
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文件相关推荐
- python调用pyd_Python生成pyd文件
Python的脚本文件是开源的,量化策略的安全性没有保障.因此需要保护源码.那么要对Python代码进行混淆.加密保护. 混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Pytho ...
- Python的py文件生成pyd文件
使用 py2exe 打包 Python 程序 Python的py文件生成pyd文件 源代码: git@gitee.com:menglingzhi/cython_test.git 另外python打包w ...
- python的pyd文件_Python 加密之 生成pyd文件
混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Python有py.pyc.pyw.pyo.pyd等文件格式. 其中,pyc是二进制文件.但很容易被反编译. pyw也不行,只是隐藏 ...
- 关于win7下编译pyx文件生成pyd文件供Python调用
在运行python程序的时候,会发现有些模块不是用Python语言编写的,而是用C/C++编写的,主要是考虑到C/C++编写的模块相对Python脚本语言编写的模块执行速度更快.那么在调用这些由C/C ...
- python在内存中生成Zip文件!
python在内存中生成Zip文件! - 天真的好蓝啊 - 博客园 python在内存中生成Zip文件! import zipfile import StringIO class MemoryZipF ...
- 旋转狗头:Python如何读取STL文件,生成STL文件预览图(缩略图)之进化,动态旋转Gif图
之前的文章<Python如何读取STL文件,生成STL文件预览图(缩略图)>实现了将STL文件读取加载.绘制保存为某个角度下2D的png图片,作为预览图(缩略图).但是3D转2D,预览就丢 ...
- Python:pyinstaller如何将一个项目的.py和相关资源文件打包生成.exe文件
前言 写这篇博文真属于意外,因为小编不是以学术为目的的,而仅仅是以讨女朋友喜欢为目的,所以文中略有狗粮.撇开这些,相信大家找到为了找到一个可行方案已经寻寻觅觅良久,本文或许便是你的"真命天子 ...
- 将pyx文件编译成pyd文件(很多坑,已解决)
项目场景: Faster R-CNN项目,将pyx文件编译成pyd文件(很多坑,请注意) 项目环境 python 3.6 – conda的虚拟环境 TensorFlow 1.15.0 win 10 问 ...
- svn增量打包部署_利用svn的补丁文件打包生成增量文件
下面的代码是maven版本 1. 创建patch.txt增量文件 保存到 文件目录下 比如 E:\aa\patch.txt 2. 编写java代码 package utils; import java ...
最新文章
- VS2015 Cordova实现WebView加载页面进度条(Android)
- C#游戏开发快速入门2.2改变游戏对象的状态
- Mac OS Terminal 几个快捷键
- AB1601中如何实现比较精准NOP延时
- Windows Server 2008远程桌面端口更改方法
- Scala变量的声明和赋值
- 微服务和分布式学习专栏
- JDK 13:什么是AggressiveOpts?
- android 获取图片主色调
- 40 FI配置-财务会计-固定资产-组织结构-创建屏幕格式规则
- ARM公司的Cortex-M0概况介绍
- html input type=quot;filequot;,input[type='file']默认样式
- 【matlab】数值计算实现电路仿真
- PostgreSQL导入导出CSV
- 教你如何认汽车标志(转)
- Flutter—— 仿自如APP裸眼3D效果
- html 倒计时特效,JS节日倒计时特效(精确到毫秒)
- 每日必读DZone news - 2022年2月十大DZone文章
- 当AD(Altium Designer)画PCB时Ctrl+H快捷键无法选中连线时的解决办法
- Mybatis 批量插入数据 SQL