因为是Mac电脑,再装上anaconda,所以其实我的电脑里一直有两套python,一套是系统的3.11,一套是conda的3.8;两套的包不能兼容(糟糕的包管理),但是懒惰如我,就在两个console上都pip install一些基础包,也凑活能用。
但是对于WindPy这个包来说,原始的操作方法是在安装完Wind API之后运行系统脚本
sudo sh "/Applications/Wind API.app/Contents/python/installPy.sh"
但是注意,这个installPy.sh的内容仔细看其实就还是在系统python上进行的安装,并不能在conda上安装。并且如果把conda的路径copy出来去运行setup.py,也不成功(还是对linux底层语言太不熟悉……)
(但仔细看,其实这里面很重要的一步是ln -s,这其实是进行一个软连接)
此外,我还尝试了一些乱七八糟的方法,比如sys.path查看系统和conda包的位置,发现系统包里只有一个WindPy.egg-link,并没有更多的包内容;我尝试把这个文件拷贝到conda包,然后强行pip install,虽然console可以识别这个包,但是却不能安装。但仔细看,这个WindPy.egg-link其实就是一个路径的名称。
最后咨询了Wind的客服,告诉我应该在Spyder console里面直接运行
import sys;
sys.path.append("/Applications/Wind API.app/Contents/python")
所以其实最后看下来,WindPy在环境调用最重要的一步并不是在路径中装包的文件夹(通常是site-package)中有一个内容文件夹,而是将环境的path添加上它的路径。了解之后,就很容易在其他的python环境中去安装WindPy插件了~
PS:这种安装方式与PyCharm的直接继承系统环境还有一些区别:1)在PyCharm里面的w.WindData 对象是可以看到里面的属性,但在Spyder中显示这个包不在解释器环境中,所以没有办法点开去看具体的属性。2)其实包还是没有在conda环境上安装,所以每一次重启Spyder的时候都需要重新添加path
对于1)的对象查看问题,有两个解决方案:第一种是指定变量为w.WindData的某个属性,比如Data,就可以输出list;2)直接在wsd函数中的option添加usedf=True输出DataFrame格式。总体来说这个问题不太影响使用,并且Spyder的变量区比PyCharm简洁,更符合我的编程习惯~