使用Cython把py轉成pyd文件

介紹

對於python這門語言來講,自己沒有很好的加密方法,就算是pyc和pyo字節碼文件也能夠很輕鬆的用軟件反編譯出來。推薦反編譯軟件是Easy Python Decompiler。軟件的下載地址是:https://sourceforge.net/projects/easypythondecompiler/html

能夠把pyc和pyo字節碼文件所有反編譯成原來的py文件。因此要想加密py文件有的辦法是把py文件用cython轉成c語言的文件而後再用編譯成pyd文件,這樣就能夠很好的保護源代碼。python

軟件的安裝

Cython準確說Cython是單獨的一門語言,專門用來寫在Python裏面import用的擴展庫。實際上Cython的語法基本上跟Python一致,而Cython有專門的編譯器先將 Cython代碼轉變成C(自動加入了一大堆的C-Python API),而後使用C編譯器編譯出最終的Python可調用的模塊。官方的網址:http://cython.org/#documentation工具

首先得清楚本身安裝的python的版本,若是是2.7的版本,那麼對應的vs的編譯版本就是vs2008,全部的python擴展庫都要用同一種vs版本的編譯器編譯,不能夠使用mingw32ui

來編譯,由於python自己就是用vs來編譯的。那麼若是是3.0以上的版本,就會用vs2010以上的版本,要安裝對應的版本。由於使用cython須要c編譯器來編譯代碼。若是使用的2.7的版本,微軟提供了專門用來編譯python擴展庫的工具。地址:https://www.microsoft.com/en-us/download/details.aspx?id=44266加密

若是你已經安裝了vs2008的話就能夠直接使用vs2008.spa

Cython安裝直接用pip安裝獲取下載安裝.net

pip install cythonhtm

下載完後要想使用微軟的工具,就要升級setuptools工具,只有新版本的setuptools才能夠識別到這個工具。更新命令:pip install setuptools -Uip

就會卸載之前的版本安裝最新的腳本。utf-8

實例

首先要寫一個配置文件來使cython來執行把py編譯成pyd文件,最好把要編譯的py文件都換成pyx爲擴展名的文件。

參考資料:http://docs.cython.org/en/latest/src/tutorial/cython_tutorial.html

假設這個文件叫setup.py

# -*- coding: utf-8 -*-

#使用微軟的那個工具要使用setuptools模塊

import setuptools

from Cython.Build import cythonize

from setuptools.extension import Extension

# mit/log.py是文件的位置,好比某個文件夾。mit.log是import的時候模塊的名字

extensions = [Extension('mit.log', ['mit/log.py'])]

 

setuptools.setup(

    # ext_modules = cythonize(extensions)

    ext_modules = cythonize("mit/*.py")

 

)

以上的數據寫在一個文件裏面。

若是是對整個文件夾加密,要在文件夾裏面放一個__init__.py

主要的話是使用import setuptools來獲取vs編譯器版本。

能夠選擇那些文件編譯成pyd,也能夠對一個目錄進行編譯。而後執行命令好比  setup.py build_ext --inplace 以後就會生成pyd文件。

若是你想把全部的pyx文件都合成一個文件的話,能夠參考一下的方法。

http://stackoverflow.com/questions/19646985/making-one-pyd-for-a-set-of-files-with-cython

在一個文件裏面添加其它文件的引用,而後編譯成一個文件。

其它實例之後再補充

相關文章
相關標籤/搜索