Python2 安装pytinyxml2
老工程要使用pytinyxml2,官网显示最后一个版本2.1.0更新于6年,所以安装的过程中踩了非常多的坑。其中一些技巧适用于各种装库异常。
常用小技巧:修改版本
因为python2.7官方都不支持了,所以慢慢的很多库都开始废弃py2支持了,导致最新的版本安装出错
例如安装numba时,直接pip会失败
可以尝试安装历史版本
pip install llvmlite==0.29.0
pip install numba==0.44.1
不确定历史版本时可用如下方式看所有版本号,从最后一个开始向前尝试即可。
编译安装pytinyxml2
在GitHub上找到pytinyxml2的工程并下载到本地,进入工程目录编译
python setup.py build_ext --inplace
python setup.py build_ext install
这时提示没有 swig.exe,还是没安装成功……
解决缺少swig.exe
swig是C++转python接口的工具
- 下载swig(https://sourceforge.net/projects/swig/),注意是否是windows版本
- 解压缩到任意文件夹下
- 加路径,网上有两种方法
- 方法1:将swig.exe复制到python2.7所在目录下,将swig/lib里所有*.swg复制到python2.7/Lib下。会提示有同名文件,我选择了跳过。再运行时如果提示找不到某些.swg文件,到swig的原文件夹下找到同名文件复制python2.7/lib下即可。
- 方法2:将swig.exe所在路径配置到环境变量中(我试了无效)
安装C++
swig要求安装过Microsoft Visual C++,如果没有安装过会出现很详细的提示,包括版本和下载链接。去官网下载即可,很简单。
error: Microsoft Visual C++ 14.0 is required. Get it with http://xxxxx
_pytinyxml2 has no attribute XML_ERROR_COUNT
以为安装完成,运行脚本的时候却发现少了点什么,一度怀疑自己装错了。
其实并没有!
根据python trace找到报错的文件,发现是swig自动生成的一个东西
应该是把C++的东西映射到python,实际XML_ERROR_COUNT这个属性在业务脚本中可能都没用到。果断注释掉!终于把脚本调通了!撒花!
一个小坑
一些库可以直接
python setup.py install
但是可能出现user warning, 那就必须使用build后install的办法