使用pip安装的obspy程序在使用pyinstaller进行打包时会产生错误,这里使用由iris_edu开源的pyweed工具的打包方法。
首先卸载pip直接安装的obspy包
pip uninstall obspy
从github下载obspy压缩包
网址:GitHub - obspy/obspy: ObsPy: A Python Toolbox for seismology/seismological observatories.
根据自己安装版本下载相应版本的压缩包。
解压后,使用python setup install命令进行安装,此时python环境下的site-package文件夹下会有obspy以及obspy-0.0.0+archive-py3.7.egg-info两个文件夹。
下载pyweed代码,网址:
GitHub - iris-edu/pyweed: PyWEED is a cross-platform downloadable app for retrieving event-based seismic data解压后,进入installer目录,里面有hooks以及rthooks两个文件夹,将两个文件夹复制到项目路径。
删除hooks下的hook-numpy.core.py,hook-mpl_toolkits.basemap.py两个文件。
更改pyinstaller生成的.spec文件
a = Analysis( ['ps_amp_ratio.py'], pathex=[], binaries=[], datas=[], hiddenimports=['charset_normalizer.md__mypyc'], hookspath=['hooks'], hooksconfig={}, runtime_hooks=['rthooks/obspy.py'], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )
主要是hookspath以及runtime_hooks字段。
打包成的软件即可成功运行。
参考链接:
ObsPy and PyInstaller - Users Mailing List Archive - ObsPy Forum