这段时间作接口自动化测试,用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试试,
结果升级后就调用成功~~~无语~无语~