用Python调用Wind接口,编写一个策略程序,小问题比较多,随手写下,防止以后忘记(查到好多高手写的文章,就不一一列出了,如有问题,请联系我,我删掉就行)。
一、用pyinstaller打包程序出错
刚开始在Python3.6下面开发,调试都没有问题,因为要发送给另外一个兄弟,所以想做成exe发布。查了一下,pyinstaller好像不错,初步测试也通过,但发布时遇到问题挺好,这里罗列一下。
1、Python3.6下pyinstaller打包报错
进入程序文件所在目录,输入:
pyinstaller -w -F updateExcelGUI.py
错误如下:
RecursionError: maximum recursion depth exceeded
上网查了一下,好像是pyinstaller在python3.6下面运行有问题,估计我短期内也解决不了,所以放弃。转入下一个问题。
2、在Anaconda3和PyCharm下配置python2.7
一环套一环啊。不过这一步比较简单。
Anaconda下安装python2.7:
打开Anaconda Prompt,运行以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ #添加国内镜像,下载东西快很多
conda config --set show_channel_urls yes
conda config --remove channels defaults #好像是说删除默认源,不然总是从官网下载然后超时。
#新建Python2.7 conda create -n python27 python=2.7
后面会提示是否继续,按常理选择即可。
这个安装完之后会在Anaconda3目录里生成一个新目录envs\python27,后面配置环境要用到这个目录。
安装完成后想切换到python27,就在Anaconda Prompt里运行如下命令:
activate python27(这里面的python27是前面create时自己定义的名字)
deactivate(退出python2.7进入python3.6)
Pycharm里配置python2.7:
选择File-Settings-Project Interpreter,点小齿轮图标,选择add local,再选择Anaconda3\envs\python27\python.exe就行了。
3、python2.7下pyinstaller制作exe
在Anaconda Prompt中运行activate python27,利用pip install pyinstaller,然后切换到程序目录,运行
pyinstaller -w -F updateExcelGUI.py
生成成功,但是点击exe提示Fatal Error,不知道哪儿出错了。网上有高手说看输出信息,不过生成exe时用如下命令
pyinstaller -c updateExcelGUI.py
切换到dist下生成的目录里,在Prompt里运行这个exe,提示未找到WindPy.pth,整了好久,最后在文件夹Anaconda3\envs\python27\Lib\site-packages里搜到这个文件,直接复制到生成的exe文件同目录下,运行成功。
忘了说在python2.7下安装wind了,还是Prompt下,运行:
python "D:\Wind\Wind.NET.Client\WindNET\bin\installWindPy.py" "D:\Wind\Wind.NET.Client\WindNET"
D:\Wind\Wind.NET.Client\WindNET是Wind的安装目录。
生成的exe运行结果和原来在Python3.6下还不一样,继续调。