使用虚拟环境打包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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python中使用异常处理来判断运行的操作系统平台方法
Jan 22 Python
Python脚本实现格式化css文件
Apr 08 Python
Python中利用sorted()函数排序的简单教程
Apr 27 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
利用aardio给python编写图形界面
Aug 21 Python
python实现搜索文本文件内容脚本
Jun 22 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
python中pyplot基础图标函数整理
Nov 10 Python
Python基于execjs运行js过程解析
Nov 27 Python
手把手教你实现PyTorch的MNIST数据集
Jun 28 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 取得瑞年与平年的天数的代码
2009/08/10 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
Moment.js 不容错过的超棒Javascript日期处理类库
2012/04/15 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
chrome调试javascript详解
2015/10/21 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
Angularjs cookie 操作实例详解
2017/09/27 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
[02:23]DOTA2英雄基础教程 幻影长矛手
2013/12/09 DOTA
举例讲解Python设计模式编程中对抽象工厂模式的运用
2016/03/02 Python
python监控文件并且发送告警邮件
2018/06/21 Python
详解Python文件修改的两种方式
2019/08/22 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
实习鉴定范文
2013/12/19 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
高一学生评语大全
2014/04/25 职场文书
师德师风自查总结
2014/10/14 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers