virtualenv + pyinstaller 将python程序打包成.exe文件(Windows系统)

发布时间 2023-04-09 22:26:32作者: 帅胡

一、virtualenv

virtualenv用于创建一个虚拟的python环境,用于解决python环境中安装的包过多,存在冲突的问题

1、virtualenv安装

pip install virtualenv

可使用 virtualenv --version 查看安装情况

2、virturalenv基本使用

打开命令行窗口(win+R ->cmd),切换到想要创建虚拟环境的目录下(例如:cd xxx)

(1)创建虚拟环境:

virtualenv pyenv

pyenv即虚拟环境所在的文件夹,可自行定义其名称

(2)激活虚拟环境

cd pyenv/Scripts  切换到虚拟环境的Scripts目录
activate          执行activate命令激活当前虚拟环境

(3)退出当前虚拟环境

deactivate

二、pyinstaller

1、安装pyinstaller

pip install pyinstaller

2、pyinstaller 基本使用

命令语法:pyinstaller -选项 python源文件/目录

打包后的exe文件存放在生成的dist文件夹中

三、virturalenv + pyinstaller最小化打包python程序

基本流程

  • virtualenv envname #创建新的虚拟环境
  • cd envname # 进入虚拟环境目录
  • cd Scripts # 进入虚拟环境的Scripts文件夹中
  • activate # 激活虚拟环境
  • pip install pyinstaller # 安装打包工具pyinstaller
  • pip install pypiwin32 # 安装打包工具相关依赖
  • pip install python-packages # 安装python程序中需要引入的外部包
  • 将需要打包的python文件或文件夹复制到Scripts目录中(该步骤也可以不用执行)
  • pyinstaller -F py文件路径
  • 切换到Scripts目录下,执行deactivate,取消激活虚拟环境
  • 打包结束,exe文件存放在dist文件夹中

四、pyinstaller打包xgboost存在的一些问题

由于打包的程序中引用了xgboost模块,打包成功后运行exe文件时,界面一闪而过,通过命令行运行该程序,报错如下

xgboost.libpath.XGBoostLibraryNotFound: Cannot find XGBoost Library in the candidate path

对此在网上搜索了一些方法,如下介绍本人解决问题的一种方法:

(1)在GitHub上下载xgbbost源码

(2)将源码文件中python-package中的xgboost文件夹复制到你自己的python项目中

(3)下载xgboost.dll

通过官方网站下载时网页无法访问,故在此通过本人百度网盘分享该文件。

链接:
提取码:w9tz

下载好了之后,将该文件复制到(2)中的xgboost文件夹中

(4)使用pyinstaller打包时,在命令结尾加上

--add-data=xgboost;xgboost

后期发现这个方法在使用的时候还是会出现问题,可以尝试用-D参数打包成文件夹,然后把xgboost源码文件复制到生成的exe文件所在的文件夹中

或者直接用下面的命令,不过xgboost源码文件夹要在当前命令目录下