virtualenv创建虚拟环境进行封装exe

一、安装virtualenv库

pip install virtualenv

二、cmd命令行进到要创建虚拟环境的文件夹

 

三、创建虚拟环境

e:\venv> virtualenv my_project # 在venv文件夹中创建一个虚拟环境

四、激活虚拟环境

# windows环境
my_project\scripts\activate

# mac、Linux环境
source my_project_env/bin/activate

 

五、将py文件放到venv文件夹下

六、安装Python库

在venv文件夹下或虚拟环境文件夹下进行pip安装

# 将需要的库导入到txt文件
方式一:
pip freeze > requirements.txt # 有可能把不需要的包也导出
方式二:
pip install pipreqs
pipreqs ./ --encoding=utf8

# 在虚拟环境中安装需要的Python库
pip install -r requirements.txt

七、使用pyinstaller打包

安装:pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple/

pyinstaller 最重要的两个参数就是 -F 与 -D 参数。

使用 - F 参数, pyinstaller 会将 python 程序打包成单个可执行文件。

使用 - D 参数, pyinstaller 会将 python 程序打包成一个文件夹,运行程序时,需要进入该文件夹,点击运行相应的可执行程序。

简单总结一下:

-F:打包 Python 程序为单个可执行文件

-D:打包 Python 程序为一个文件夹

-i:生成图标,只适用于 Windows 平台

-n:指定打包后生成文件的名称

-w:禁止命令行弹出

# 将要打包的代码放在venv或虚拟环境文件夹下进行打包
pyinstaller -F -w main.py

pyinstaller打包过程中报错处理:

1. ImportError: DLL load failed while importing win32api: 找不到指定的程序。

环境python3.8.10。解决办法:

方式1:将虚拟环境的scripts添加到环境变量中

方式2:将代码放到虚拟环境的scripts文件夹中,在scripts中封装。

2. Pyinstaller打包含有sklearn库报错,缺少模块

解决办法:在生成的spec文件中,hiddlemodule添加缺少的模块,重新打包pyinstaller xx.spec

3. Pyinstaller打包后,正常运行,但执行某个功能时闪退

往往是由于打包时缺少某个库造成的,比如用pandas读取xls文件,由于没有安装xlrd库,闪退。

解决办法:打包为console或debug模式,查看错误信息【推荐console模式,不推荐debug模式】 console模式举例:
pyinstaller -c demo.py
debug模式举例:
pyinstaller -d all demo.py
然后进入dist文件夹中,将demo.exe拖到命令行窗口(cmd或anaconda Prompt)执行即可,很容易发现出错提示。

pyinstaller踩坑记,缺少依赖、打包错误或运行无效排查过程备忘 - 知乎 (zhihu.com)

4. 打包flask web项目

由于flask web项目需要依赖静态资源,打包时需要进行指定 。

首先,生成*.spec文件

pyi-makespec app.py

 其次,修改spec文件中的datas,指定静态资源相对路径

# 修改Analysis中的datas
datas=[('app\\static','app\\static'),('./app/templates','./app/templates')],

# 为了运行exe时有提示,修改EXE中的console
console=True,

最后,使用pyinstaller命令打包

pyinstaller -F app.py # 不加-w,以便打包后运行exe时有提示窗口

 八、停用、删除虚拟环境

# 停用虚拟环境
deactivate

# 删除虚拟环境
rmvirtualenv my_project

九、virtualenv其他命令

cdvirtualenv    #导航到当前激活的虚拟环境的目录中,比如说这样您就能够浏览它的 site-packages。

cdsitepackages   # 和上面的类似,但是是直接进入到 site-packages 目录中。

lssitepackages     #显示 site-packages 目录中的内容。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值