這段時間作接口自動化測試,用python直接調用接口,sign值是通過系列複雜算法加密後生成的字符串,保密級別高,不能直接以py文件供你們調用~~python
pyc文件呢,很容易就被反編譯了,pyd文件和通常dll相似,不容易被反編譯。c++
生成pyd很容易,網上百度一堆堆,可是調用pyd文件會遇到好多錯誤。算法
在此貼一下生成pyd到調用pyd文件的方法供參考:api
1.新建一個setup.py文件:app
# 用cpython生成pyd方式//須要安裝cpython和vs2015(安裝vs時只安裝c++便可)
# 這種方式生成的pyd文件區分系統位數,好比32位生成的只能用於32位,64位則提示不能容許
from distutils.core import setup
from Cython.Build import cythonize
# name隨便寫,py文件要正確
setup(name='api_sign', ext_modules=cythonize('api_sign.py'))
2.執行命令生成pyd文件:
python setup.py build_ext --inplace
"""
執行後會生成pyd文件,可修改文件名,但不能去掉和py文件相同的部分
引用該pyd文件須要放入模塊下,經過模塊引入該文件,不能直接引用
"""
3.調用pyd文件:
from Encryption import api_sign as i
a, b = i.encrypt('12', '213')
print(a)
print(b)
api_sign.py文件是須要生成pyd的文件
生成後的pyd文件須要放到模塊下引用,不能直接引用
測試
當引用pyd文件報以下錯誤時:ui
1.ImportError: DLL load failed: 找不到指定的模塊加密
2.找不到指定程序code
……接口
解決流程:
1.確認引用的路徑是否正確
2.確認引用的pyd是否引用了須要安裝的模塊,若是是,須要把引用的pyd路徑也指定(sys.path.append("路徑"))
3.若上面這些步驟還不行,直接把python升級到3.7.4最新版本
坑爹的…………
個人python是3.6.X的,一直引用pyd文件提示找不到模塊~~斷斷續續折騰了幾周沒搞定~~
後來用depends看引用dll間的關係,直接報錯找不到python37.dll,嘗試升級python試試,
結果升級後就調用成功~~~無語~無語~