悟空最近在专研fme 关于pyhton的拓展,在研究过程中,发现fme内置的python编译工具需要安装拓展模块的时候(比如pandas、docx、xlrd等)出现了各种各样的问题,用控制变量法研究了两天,悟空终于是找到了fme python的关键所在。
如果是直接用pip3 install xx 的命令来安装的话,会默认安装到指定路径,由于我是之前安装过pycharm39,所以pip会默认给我安装到pycharm的默认路径中,我又尝试在fmepython37文件夹下安装,结果让我非常难受,即使是用cd 选择了路径,包依旧还是安装在默认路径。
解决办法:增加target语句,同时选择fmepython,如fme.exe python -m pip install pandas --target "C:\Program Files\FME\python\python37"就可以将需要的包安装到我们需要的路径。
因为我用的fme2020.2版本,默认的pip版本是20.0.2(pip版本过低则会导致无法安装很多包)
然后我就很单纯的发现C:\Program Files\FME\fmepython37里面有个pip文件夹,所以我理所当然的在该路径下更新了,pip(使用pip install --upgrade pip )更新成功了但是还是报错。
最终折磨了我许久,我终于在C:\Program Files\FME\python路径下找到了低版本的pip文件,原来fme的默认pip安装文件和包的读取文件不在一起这属实是让我蚌埠住了。随后在该路径下更新了pip就没有提示报错,可以舒爽的下载各种python包了。
fme python包的读取路径有多个,C:\Program Files\FME\python以及C:\Program Files\FME\python\python37还有C:\Program Files\FME\fmepython37,我分别尝试过在这三个路径安装包,都能正常使用。但是就在我安装完pandas模块并运行的时候,就一直给我报错
最开始通过查询我了解到这是因为numpy 和 pandas 的版本不兼容导致的问题,于是我就用排列组合,将所有的版本的numpy 和pandas 都尝试了一遍 结果还是不能解决这个问题。就在我一筹莫展的时候,我突然想到会不会是因为读取优先级的问题,因为fme的pyhon是自带一个低版本的numpy的,很可能是fme调用了低版本的numpy 导致了 高版本无法被识别。于是我将路径C:\Program Files\FME\python里面的numpy文件夹直接删除,果然pythoncaller 顺利运行了起来。
于是悟空得出结论,fme.python读取包路径的优先级是 python>python37>fmepython37
第一次写博客,希望大家多多支持,关注一波,后续会不断推出fme 和pyhon结合的各种有趣内容,以及fme的各种有趣模板。