背景:在linux系统下没有配好DOTA_devkit,失败无奈转向windows10
解决:import _polyiou ModuleNotFoundError: No module named '_polyiou’问题
Windows10下编译DOTA_devkit
下载swig
下载swig以后,将swig的环境变量配置到系统的环境变量中
将swig环境变量配进去,是为了替代下面这句命令:DOTA_devkit的官方安装步骤一
测试swig的安装是否成功
能够输出这样的就可以了,不难的,慢慢来,到这里,已经完成了最难的了
下载DOTA_devkit文件,激活虚拟环境
在下载文件以后,激活相应的虚拟环境,同时进入到文件里面,如下图
然后再执行swig -c++ -python polyiou.i这个命令,如下图
是没有任何输出的,表示就没有问题
然后再执行python setup.py build_ext --inplace,如下图
不出意外,一个会报错,如下图,哈哈哈哈,我也遇到了,逗逗你们
看不懂,错误看不懂,没事,去GitHub,链接:链接
这个点赞三个的,照着他的方式来修改保存退出
继续执行上面的那个代码,如下图这样就可以了
在DOTA_devkit文件夹里面,会出来这么一个文件夹,如下图,
解释一下:
_polyiou:这个是基于任何系统都会有保留的
cp36:指的是python版本,我的是python3.6.9
win:windows
amd64:操作系统64位
坑来了
其实到这里,应该就没什么了,但是这里这里有一个问题,就是官方的这个版本,在polyiou.py文件中,使用的是imp加载上面生成的文件,如下图
但是问题在于imp现在已经不用了,如下图,人家让我们用importlib,所以我们要改一下,上面的代码意思也很简单,就是说将生成的这个文件_polyiou.cp36-win_amd64.pyd加载一下
所以这里 我把它改完,如下,其实就是用importlib加载那个文件
到这里,就全部搞定了
测试
在命令行输入命令,进入jupyter测试demo.ipy文件,应该就没什么问题了
最后说明:其实在jypyter里面运行这段代码的时候,如下图
会报这么一个错误(如下图),意思就是说,引入_polyiou有问题,其实就是说在导入生成的_polyiou那个文件的时候,没有很好的导入,所以只要将那里imp修改就好了
好了,这就是全部的,欢迎讨论