说明:本文只针对本人在处理过程遇到的问题,仅供参考,在参考过程中需要注意路径替换为自己的文件的绝对路径
首先需要在指定的环境下安装pyinstaller库,使用清华源会大大提高下载速度
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
对需要处理的代码进行打包,本文以使用demo_ppi.py文件绘制雷达反射率图片举例,在终端窗口执行指令
pyinstaller -F demo_ppi.py
demo_ppi.py内容如下:
import os
import sys
from cinrad.io import StandardData
from cinrad.visualize import PPI
def ppi(file_dir):
file_name = os.path.basename(file_dir)
f = StandardData(file_dir)
ref = f.get_data(0, 150, 'REF')
fig = PPI(ref)
fig(file_name[:-8] + '.png')
return ref['REF'].values,[1,2,3]
if __name__ == '__main__':
file_dir = sys.argv[1]
# file_dir = 'Z_RADR_I_Z9543_20220419014212_O_DOR_SA_CAP_FMT.bin.bz2'
value = ppi(file_dir)
会在demo_ppi.py的同级目录下生成disk文件夹,在其中的demo_ppi文件夹下会生成demo_ppi.exe可执行文件
运行sample.py调用exe可执行文件会报错
sample.py代码如下,exe_dir需替换成对应的绝对路径
import subprocess
def test_exe(file_dir):
command = [r'exe_dir\demo_ppi.exe', file_dir]
subprocess.check_output(command)
if __name__ == '__main__':
file_dir = 'Z_RADR_I_Z9543_20220419014212_O_DOR_SA_CAP_FMT.bin.bz2'
test_exe(file_dir)
报错原因分析:
没有将radar_station.json文件正确的打包进可执行文件中去,执行以下代码重新打包。注意:不可使用-F进行打包,会找不到json文件的目录,重新打包指令替换如下,前部分是json文件路径,后部分是py文件路径
pyinstaller --add-data "D:/anaconda3/envs/xgb/cinrad/data/radar_station.json;." E:/PycharmProjects/16tmp_demo/demo_ppi.py
再次执行仍会报错
此时只需要将对应D:/anaconda3/envs/xgb/cinrad下的data文件夹拷贝至生成的disk文件夹下的cinrad文件夹里面即可
再次执行sample.py即可完美运行!