利用 cython 編譯成 pyd 文件並且調用 - 保護源碼


安裝 cython

pip install cython

或者去官網下載安裝

 

安裝 C++ 編譯器

(如果不安裝 C++ 編譯器,就進行 編譯命令,會發生報錯,比如 unable to find vcvarsall.bat)

minGW 不支持 3.5  所以 安裝 VS(也比較省事,不需要為 python 添加配置文件之類的麻煩事)

具體所需要的 VS 版本 要查看 Lib\distutils\_msvccompiler.py 文件里面的代碼片段進行判斷

如:

if version >= 14 and version > best_version:

表示需要 VS14 及以上版本,也就是 VS 2015 及其以上版本. python3.5 就是需要 VS 2015 以上

(相對的如果是9就是9以上即可這時VS10什么都是可以的)

VS 2015 社區版 下載安裝器 http://pan.baidu.com/s/1eSueWLG

安裝時選擇自定義安裝,勾選上功能

Common Tools for Visual C++ 2015

Python Tools for Visual Studio(March 2016)

Microsoft Web Developer Tools 此項不是必要安裝的,但是由於這是軟件默認勾選的,所以也裝了

 

創建 python 腳本,調用 cython 庫進行編譯

#setup.py

from distutils.core import setup
from Cython.Build import cythonize
setup(
    #name = 'xxx',
    ext_modules = cythonize("file.py")
)

 

使用命令行 進行編譯

(應該也可以直接運行 setup.py 進行編譯)

方式[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] 之后配合使用。不是必須執行的。


導入文件模塊進行調用

import 模塊名

生成的文件名字不能更改,或者只能把文件名字更改為與模塊名一致,模塊名就是 編譯前的 py 文件模塊名字

一旦隨意修改,可能會導致 import 失敗

No module named 'xxx'

或者

builtins.ImportError: dynamic module does not define module export function (PyInit_xxx)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM