這段時間做接口自動化測試,用python直接調用接口,sign值是經過系列復雜算法加密后生成的字符串,保密級別高,不能直接以py文件供大家調用~~
pyc文件呢,很容易就被反編譯了,pyd文件和一般dll類似,不容易被反編譯。
生成pyd很容易,網上百度一堆堆,但是調用pyd文件會遇到好多錯誤。
在此貼一下生成pyd到調用pyd文件的方法供參考:
1.新建一個setup.py文件:
# 用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文件報如下錯誤時:
1.ImportError: DLL load failed: 找不到指定的模塊
2.找不到指定程序
……
解決流程:
1.確認引用的路徑是否正確
2.確認引用的pyd是否引用了需要安裝的模塊,如果是,需要把引用的pyd路徑也指定(sys.path.append("路徑"))
3.若上面這些步驟還不行,直接把python升級到3.7.4最新版本
坑爹的…………
我的python是3.6.X的,一直引用pyd文件提示找不到模塊~~斷斷續續折騰了幾周沒搞定~~
后來用depends看引用dll間的關系,直接報錯找不到python37.dll,嘗試升級python試試,
結果升級后就調用成功~~~無語~無語~