Cython加密(含Windows和Linux)
本文共分为三章,第一章为Win环境准备,第二章为Linux环境准备,第三章为加密过程(通用)。Win请看1和3章,Liunx请看2和3章。
一、Windows环境加密Python环境准备
- 需要电脑上安装Visual Studio(下载地址: https://visualstudio.microsoft.com/zh-hans/vs/)
下载免费的社区版即可。
因为只需要用到C语言的编译器,为节省空间,安装时仅勾选C++模块即可。
二、Linux环境加密Python环境准备
1.1 安装Linux(如果已有Linux可跳过本节)
Windows10安装Linux子系统 方法/步骤
- 点击左下角的Windows图标,然后再点击设置图标。
- 在Windows设置界面上点击“应用”。
3.在“应用和功能”界面下点击“程序和功能”。
4.接着在这个界面左侧上点击“启用或关闭Windows 功能”。
5.勾选“适用于Linux的Windows子系统”项。只有开启这项设置才能正常安装Linux子系统。
6.在微软应用商店(Microsoft Store)搜索 Linux,可以看到一系列 Linux 发行版,根据自己需要选择适合自己的发行版,这里选用 Ubuntu。
7.下载完成后启动,可能需要等待一两分钟,设置用户名和密码(要牢记),我们便得到了一个 Linux 环境了。
1.2 在Linux上安装Python环境
1)修改Ubuntu的apt-get源为国内镜像源
1、原文件备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2、编辑源列表文件
sudo vim /etc/apt/sources.list
3、将原来的内容删除(连续两次按d),添加如下内容并保存(:wq)(中科大镜像源)
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
4、运行sudo apt-get update
2)安装必备的库, 执行
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
3)源码安装Python
在https://www.python.org/downloads/source/下载指定的版本
例如 wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
如果wget命令太慢,可以用Windows上的迅雷下载并拷贝到Linux中。
解压 (命令:tar -xvf 文件名)
例如 tar -xvf Python-3.6.8.tgz
进入文件夹cd Python-3.6.8
逐行执行如下命令
./configure --with-ssl --prefix=/usr/bin/python3.6
make && make install
rm /usr/bin/python
ln -s /usr/bin/python3.6/bin/python3.6 /usr/bin/python
rm /usr/bin/pip
ln -s /usr/bin/python3.6/bin/pip3 /usr/bin/pip
三、加密过程
1.需要安装cython库
如使用纯Python环境,执行pip install cython,
如使用Anaconda环境,执行conda install cython
2.复制如下代码并命名为setup.py。
from distutils.core import setup from distutils.extension import Extension from Cython.Distutils import build_ext filename = 'test' # 源文件名 full_filename = 'test.pyx' # 包含后缀的源文件名 setup( cmdclass = {'build_ext': build_ext}, ext_modules = [Extension(filename, [full_filename])] )
代码中的filename和full_filename中的test请替换为自己要编译的模块名称,并将py后缀改为pyx。
执行如下命令,运行上面的setup.py,即可在同文件夹生成后缀为.pyd或.so的动态链接库文件。
python setup.py build_ext --inplace
其他Python需要导入该动态链接库时,和正常的Python模块使用方法无异,直接from 模块名 import 方法名即可。