使用虚拟环境打包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 相关文章推荐
pyqt4教程之实现windows窗口小示例分享
Mar 07 Python
Python lambda和Python def区别分析
Nov 30 Python
操作Windows注册表的简单的Python程序制作教程
Apr 07 Python
Python多进程并发(multiprocessing)用法实例详解
Jun 02 Python
django实现前后台交互实例
Aug 07 Python
Python实用技巧之列表、字典、集合中根据条件筛选数据详解
Jul 11 Python
python实现停车管理系统
Nov 30 Python
python版本五子棋的实现代码
Dec 11 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
详解python中的模块及包导入
Aug 30 Python
python函数map()和partial()的知识点总结
May 26 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
php2html php生成静态页函数
2008/12/08 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
php生成静态页面的简单示例
2014/04/17 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
是 WordPress 让 PHP 更流行了 而不是框架
2016/02/03 PHP
php使用include 和require引入文件的区别
2017/02/16 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
vue倒计时刷新页面不会从头开始的解决方法
2020/03/03 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
简单了解python单例模式的几种写法
2019/07/01 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
html5 canvas简单封装一个echarts实现不了的饼图
2018/06/12 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
Python里面如何实现tuple和list的转换
2012/06/13 面试题
老公保证书范文
2014/04/29 职场文书
树转促学习心得体会
2014/09/10 职场文书
如何撰写创业策划书
2019/06/27 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
Java设计模式之代理模式
2022/04/22 Java/Android
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL