使用虚拟环境打包python为exe 文件的方法


Posted in Python onAugust 29, 2019

使用过anaconda环境下打包py文件的一点感悟,使用的是pyinstaller+anaconda环境下打包py文件

打包: pyinstaller -F -w -i logo.ico xxxx.py

-F:强制打包

-w:不带后台命令窗口

-i: 使用logo图标的地址

需要打包的文件

遇到的问题:

1.首先对于使用anaconda打包py文件是存在问题的;

1)打包出来的exe会很大,会打包很多关联库;

2)而其中的一些关联库是没有用,而导入这些库会拖慢程序运行的效率。

解决:使用虚拟环境进行打包

1.使用pipenv

虚拟环境的应用可以用pipenv

安装pipenv   :pip install pipenv

使用pipenv建立虚拟环境,通过命令行:pipenv install 建立虚拟环境

建立虚拟环境有主意的是:建立的虚拟环境是在一个项目文件下的路径上建立的

 3.建立完成后可以通过pipenv shell 进入虚拟环境

 4.进入后可以通过pip install 包  对依赖的第三方库包进行安装

pipenv install 包是对库包进行配置导入绑定到配置文件pipfile中

最后可以在虚拟环境中安装pyinstaller来对需要打包的文件进行打包;

2.使用virtualenv

1.安装virtualenv :pip install virtualenv

2.在相应的项目目录下面建立虚拟环境:cmd 中virtualenv+venv(命名)

virtualenv --no-site-packages --python=2.7 env

--no-site-packages:

默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境

 3.激活环境:项目路径下;venv\scripts\activate

 4.安装库pip install xxxx

批量安装pip install -r xxx.txt

 打包安装遇到的问题分享:

1.在进行打包的时候遇到报错:

Fatal error: PyInstaller does not include a pre-compiled bootloader for your
platform.https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html

查阅资料后发现可以通过降级实现,后来我发现造成这个问题主要是后台的win10防火墙吧我虚拟环境中的pyinstaller的pyinstaller\PyInstaller\bootloader\Windows-32bit中的runw.exe删掉了,可以通过原有python库中已有的库中去复制粘贴到相应的路径下,防火墙应该时删掉了某些重要的东西。

但是我发现后来打包中一旦带有

2.打包后发现的一些问题:numpy: No module named ‘numpy.random common'

可以发现使用numpy下,pandas的下引用的numpy导入失败,经查阅这可能是版本问题造成的

可以先卸载原有的版本pip uninstall numpy

改为安装pip install numpy==1.16.2

 3.distutils not included with latest virtualenv (16.4.0) #4064

打包出来可能会发现缺少导入包distutils,因为distutils是内置库,无法pip install 安装,并且virtualenv16.4以后就不再自带库distutils库了。

所以可以通过降低virtualenv解决这个问题;

总结

以上所述是小编给大家介绍的使用虚拟环境打包python为exe 文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python写的贪吃蛇游戏例子
Jun 16 Python
Python中dictionary items()系列函数的用法实例
Aug 21 Python
浅谈python对象数据的读写权限
Sep 12 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
python 中字典嵌套列表的方法
Jul 03 Python
python字典排序的方法
Oct 12 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
关于python 跨域处理方式详解
Mar 28 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
May 27 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
Python延迟绑定问题原理及解决方案
Aug 04 Python
python实现不同数据库间数据同步功能
Feb 25 Python
python实现最大优先队列
Aug 29 #Python
django连接oracle时setting 配置方法
Aug 29 #Python
python线程的几种创建方式详解
Aug 29 #Python
python fuzzywuzzy模块模糊字符串匹配详细用法
Aug 29 #Python
python多线程分块读取文件
Aug 29 #Python
用sqlalchemy构建Django连接池的实例
Aug 29 #Python
详解Python 字符串相似性的几种度量方法
Aug 29 #Python
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php自定义session示例分享
2014/04/22 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
软件工程师面试题
2012/06/25 面试题
模具设计与制造专业应届生求职信
2013/10/18 职场文书
英语生日邀请函
2014/01/23 职场文书
《搭石》教学反思
2014/04/07 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
校园安全演讲稿
2014/05/09 职场文书
法律专业求职信
2014/05/24 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
V Rising 服务器搭建图文教程
2022/06/16 Servers