一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python生成pyd文件

 星光閃亮圖書館 2018-03-28

Python的腳本文件是開源的,量化策略的安全性沒(méi)有保障。因此需要保護(hù)源碼。那么要對(duì)Python代碼進(jìn)行混淆、加密保護(hù)。

混淆代碼,我準(zhǔn)備使用pyminifier。而加密處理,就比較麻煩。

Python有py、pyc、pyw、pyo、pyd等文件格式。

其中,pyc是二進(jìn)制文件。但很容易被反編譯。

pyw也不行,只是隱藏命令行界面而已,可以作為入口腳本。

pyo和pyc差不多,也容易被反編譯。

最后剩下pyd格式。pyd格式是D語(yǔ)言(C/C++綜合進(jìn)化版本)生成的二進(jìn)制文件,實(shí)際也會(huì)是dll文件。該文件目前位置沒(méi)找到可以被反編譯的消息,只能被反匯編。Sublime text編輯器也是使用該格式。

 

Python的py文件生成pyd文件步驟如下。

 

1、安裝Cython

可以使用pip命令安裝Cython。

  1. pip install cython

2、處理vcvarsall.bat

若不處理,可能會(huì)出現(xiàn)“Unable to find vcvarsall.bat”錯(cuò)誤。

安裝Cython之后,還需要指定vcvarsall.bat的位置。

vcvarsall.bat是VC編譯Python環(huán)境的文件之一。而vcvarsall.bat需要安裝VC For Python2.7。我的Python是2.7,剛好可以使用這個(gè)。至于3.x版本不知道微軟更新了沒(méi)有。

下載地址:VCForPython27.msi

 

安裝成功之后,再修改設(shè)置。讓Cython可以找到vcarsall.bat。此處有兩種方案。

方案1:修改Python安裝目錄的文件設(shè)置

方案2:修改注冊(cè)表

 

我采用方案1,親測(cè)可用。方案2未測(cè)試,看似可用。

 

3、創(chuàng)建工作目錄并生成pyd文件

這里有一個(gè)坑。程序所在的目錄路徑不能包含中文文字。所以我在E盤下創(chuàng)建一個(gè)test文件夾,用于放置要處理的python文件。

簡(jiǎn)單寫了一個(gè)測(cè)試文件(命名為test.py):

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

在該目錄下,再新建一個(gè)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,跳到該目錄并執(zhí)行如下命令:

  1. python setup.py build_ext --inplace

最終生成pyd文件

其中,build是生成過(guò)程使用到的臨時(shí)文件。test.c也是臨時(shí)文件,可以打開看看傳說(shuō)中的D語(yǔ)言代碼。

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

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

 

后來(lái),我嘗試使用py2exe打包pyd文件。還需要?jiǎng)?chuàng)建一個(gè)入口腳本(命名為index.py):

  1. import test
  2.  
  3. if __name__=="__main__":
  4.     test.hello()

為了方便打包,我重新創(chuàng)建一個(gè)目錄。把index.py和test.pyd復(fù)制到該目錄。

如何安裝和使用py2exe這里我就不說(shuō)了,自行百度一下。

分別用test.pyd和未處理的test.py打包效果如下:

1)用test.pyd

直接可以在index.exe對(duì)應(yīng)的位置找到該文件。

 

2)用test.py

在該目錄下沒(méi)有test.py文件。該文件在library.zip中。

測(cè)試結(jié)果,用py2exe可以正常使用pyd文件。

 

ps:若用Cython出現(xiàn)如下錯(cuò)誤,說(shuō)明文件的編號(hào)和python腳本設(shè)置 #coding設(shè)置的編碼不一致。保存一致編碼即可解決該問(wèn)題。

Decoding error, missing or incorrect coding=<encoding-name> at top of source (cannot decode with encoding 'utf8': invalid start byte)

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    亚洲中文字幕日韩在线| 欧美一区二区三区十区| 国产一区二区精品丝袜| 99久久免费中文字幕| 国产精品丝袜一二三区| 精品少妇一区二区三区四区| 中文字幕日韩一区二区不卡| 亚洲日本中文字幕视频在线观看| 大香伊蕉欧美一区二区三区| 日本99精品在线观看| 亚洲国产黄色精品在线观看| 欧美精品一区二区水蜜桃| 国产精品亚洲精品亚洲| 久久精品国产在热久久| 丰满少妇被粗大猛烈进出视频| 内用黄老外示儒术出处| av在线免费播放一区二区| 欧美精品在线播放一区二区| 精品欧美一区二区三久久| 欧美人禽色视频免费看| 在线欧美精品二区三区| 国产一区二区精品丝袜| 最新日韩精品一推荐日韩精品| 日韩无套内射免费精品| 欧美亚洲另类久久久精品| 日韩人妻一区二区欧美| 好吊色免费在线观看视频| 亚洲欧洲一区二区中文字幕| 日本黄色美女日本黄色| 日韩亚洲激情在线观看| 国产一区欧美午夜福利| 日本精品中文字幕人妻| 日韩成人动作片在线观看| 日本免费一区二区三女| 永久福利盒子日韩日韩| 加勒比日本欧美在线观看| 欧美日韩最近中国黄片| 亚洲综合精品天堂夜夜| 国产高清一区二区不卡| 蜜桃av人妻精品一区二区三区| 91欧美视频在线观看免费|