当前位置:网站首页 > 编程语言 > 正文

pyd文件是什么(py2是什么文件)



转载链接:

https://www.cnblogs.com/GavinSimons/p/8359284.html

 

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。

  1. 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版本不知道微软更新了没有。

下载地址:VCForPython27.msi

 

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

方案1:修改Python安装目录的文件设置

方案2:修改注册表

 

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

 

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

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

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

  1. #coding:utf-8
  2. def hello():
  3.     print("Hello world")
  4.     input("<press ENTER to quit>")

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

  1. from distutils.core import setup
  2. from Cython.Build import cythonize
  3.  
  4. setup(
  5.   name = 'Hello world app',
  6.   ext_modules = cythonize("test.py"),
  7. )

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

  1. python setup.py build_ext --inplace

最终生成pyd文件

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

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

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

 

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

  1. import test
  2.  
  3. if __name__=="__main__":
  4.     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=<encoding-name> at top of source (cannot decode with encoding 'utf8': invalid start byte)

 

 

以下是安装vcpython27

转载链接:https://www.cnblogs.com/lazyboy/p/4017567.html

 

 

在windows平台上安装python c extension的扩展包是件很痛苦的事情,一般通过安装vc/vs系列来编译C扩展,不过安装包都比较大。或者通过mingw编译,不过有时会在兼容性上出现点问题。

有个好消息就是微软为Python提供了专用的编译器Microsoft Visual C++ Compiler for Python 2.7(包含32位和64位) 下载地址: http://aka.ms/vcpython27

提示:在此感谢@ThunderEX的提醒,setuptools 6.0及后续版本可以自动识别Microsoft Visual C++ Compiler for Python 2.7了,赶紧升级吧。如果不能升级,请参考下面的操作步骤。

1.下载完成并安装。以本机为例,安装完成后的路径为: 

1

2.修改python安装目录下Libdistutilsmsvc9compiler.py文件(如有必要可能msvccompiler.py文件也需要做相应更改,视系统而定),找到get_build_version方法直接return 9.0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

 

然后再找到find_vcvarsall方法直接返回vcvarsall.bat的路径(以自己机器安装后的路径为准)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

 

 

 

 

3.上述完成之后就可以在windwos下正常编译python的C扩展。以pycrypto-2.6.1为例,执行如下命令

1

当然也可以建立一个windows的二进制包

1

到此这篇pyd文件是什么(py2是什么文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 文件名批量删除字符(文件名批量删除字符怎么操作)2025-03-12 19:36:09
  • ip地址换算工具app(ip地址计算在线)2025-03-12 19:36:09
  • 国内驾照换国籍后能用吗?(换国籍了中国的驾照还能用吗)2025-03-12 19:36:09
  • 如何查看域名解析的ip(怎么查看域名解析成功)2025-03-12 19:36:09
  • u盘制作pe系统启动盘需要多大(u盘制作pe系统启动盘要多久)2025-03-12 19:36:09
  • 预训练模型可以( )新模型的训练(预训练模型怎么使用)2025-03-12 19:36:09
  • ssh免密登录失败怎么回事(ssh免密登录失败原因)2025-03-12 19:36:09
  • 谄怎么读(谄佞怎么读)2025-03-12 19:36:09
  • 社会阶级分层图片(社会阶级阶层结构划分标准)2025-03-12 19:36:09
  • m.2 nvme接口(M.2 NVMe接口转换)2025-03-12 19:36:09
  • 全屏图片