使用虚拟环境打包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操作MongoDB基础知识
Nov 01 Python
用Python编写简单的定时器的方法
May 02 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python基于scipy实现信号滤波功能
May 08 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
详解python 内存优化
Aug 17 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
Python机器学习算法之决策树算法的实现与优缺点
May 13 Python
深入探讨opencv图像矫正算法实战
May 21 Python
Python中22个万用公式的小结
Jul 21 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
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
浅析JavaScript事件和方法
2015/02/28 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue实现选中效果
2020/10/07 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python中模块查找的原理与方法详解
2017/08/11 Python
Python实现的根据文件名查找数据文件功能示例
2018/05/02 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
详解python函数的闭包问题(内部函数与外部函数详述)
2019/05/17 Python
Python高阶函数、常用内置函数用法实例分析
2019/12/26 Python
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
请解释在new与override的区别
2012/10/29 面试题
星空联盟C# .net笔试题
2014/12/05 面试题
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
总经理司机职责
2014/02/02 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
电气工程师岗位职责
2015/02/12 职场文书
捐款仪式主持词
2015/07/04 职场文书
反邪教学习心得体会
2016/01/15 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python