admin 管理员组

文章数量: 1184232

背景:在linux系统下没有配好DOTA_devkit,失败无奈转向windows10

解决:import _polyiou ModuleNotFoundError: No module named '_polyiou’问题

Windows10下编译DOTA_devkit

DOTA_devkit:链接
swig:链接

下载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修改就好了

好了,这就是全部的,欢迎讨论

本文标签: DOTAdevkit