引起失败的原因
经过个人实践发现导致自定义模块失败的原因有以下几种
1.当前路径不是默认情况下python导入文件或者模块的路径
2.自制模块本身存在问题,例如由于某些原因导致py编译为pyd文件存在错误,python环境无法识别
3.自定义模块的python版本和当前使用的python存在差异
解决方案:
1.路径非默认引用路径
获取当前文件所在路径,将当前路径添加到python导入文件的路径
import sys, os
base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_path)
#---------------- sys拼接 一定要在自定义包引入之前定义 ----------------------------------
import package.test1 as test1 #注意import的顺序。
print(test1.a)
2.编译pyd文件方法存在问题
以下是个人编译pyd文件,亲测有效的方法
2.1将需要编译的文件后缀.py改为.pyx
原始文件内容
def ZWHp():
print("Z_W_H_")
def ZWHp1():
print("调用pyd")
def ZWHp2():
print("Z_W_H_")
扫描二维码关注公众号,回复:
17360744 查看本文章
修改后缀
2.2下载easycython模块
pip install easycython
2.3使用与之后要用的python版本的conda环境,输入一下命令
进入指定文件夹中,否则生产的文件就会在其他文件
输入一下指令
easycython ***.pyx
显示一下红色的内容,就说明编译成功
2.4将编译好的pyd文件的名称进行修改
修改如下
删除原始文件,防止引入错误
2.5引入pyd模块,进行编译,但是模块会有红色波浪线,我们右键忽略即可
原始使用方法:(还需进一步验证)
使用cython模块进行将py文件编译为pyd文件
3.编译python其他文件使用的版本不一致
比如之后要使用的python版本是3.9,那就不能用3.10版本进行编译文件