Cython安装使用试验

============试验步骤=====

通过cython处理过的py文件,变成了动态链接库形式(windows平台下pyd扩展名,linux平台下是so扩展名),但跟通常意义的动态库有所区别(通常的动态库在python下是不能直接import使用的,而要shiy使用ctypes )

本实验是在windows平台下进行,如果在linux平台下,生成的是so文件,而不是pyd文件。

so文件也是可以直接import使用。见:https://blog.csdn.net/qq_16912257/article/details/80161112

1. 安装Cython 

上网站下载 https://pypi.org/project/Cython/#files

Cython-0.29.2-cp37-cp37m-win_amd64.whl

下载后用pip指令安装,pip3 install  Cython-0.29.2-cp37-cp37m-win_amd64.whl

或者直接pip3 install cython安装

2. 建立一个pyx文件(也可以直接用py文件)pyd2.pyx

#coding:utf-8
#!/usr/bin/env python
import wx								#导入wx包
def showwindow():
    app = wx.App()							#创建应用程序对象
    win = wx.Frame(None,-1,'install test')	#创建窗体
    btn = wx.Button(win, label = 'Button')	#创建Button
    win.Show()								#显示窗体
    app.MainLoop()	

3. 建立一个setup的文件setup_pyd2.py

# -*- coding: utf-8 -*-
from distutils.core import setup
from Cython.Build import cythonize
setup(name = 'pyd2',
      ext_modules = cythonize("pyd2.pyx"))

3. 编译生成c文件和pyd文件

  • 方式[1]  python.exe setup.py build_ext --inplace  此命令会生成 pyd 文件在 当前 dos 指向目录下
  • 方式[2]  python setup.py build  此命令在当前dos 指向目录生成 .C 文件,还会生成 build 目录,并把 pyd 和 lib 文件 生成在该目录下
  • 辅助命令  python setup.py install  复制安装模块到 python 目录 Lib\site-packages ,此命令一般在 方式[2] 之后配合使用。不是必须执行的。

Cython安装使用试验_第1张图片

查看目录:

Cython安装使用试验_第2张图片

4. 使用pyd文件

需要把pyd2.cp37-win_amd64.pyd 改成pyd2.pyd才能使用。

新建userpyd2.py来引用pyd2.pyd使用。

#!/usr/bin/python
# coding=utf-8

import pyd2 
pyd2.showwindow()

 

===========附录=========

最近有个项目需要把web服务改成桌面软件。

我的web服务是用Python写。那么改写成桌面软件考虑还是使用Python。

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安装使用试验_第3张图片

安装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未测试,看似可用。

 

 

你可能感兴趣的:(Python,cython,pyd)