解决Python脚本打包遇到的各种问题

  • 故事背景
  • 以下开始花里胡哨的错误操作
  • 正确方法

故事背景

某日隔壁部门同事请领导帮忙写个脚本,能够完成excel上的高重复度繁复的工作。
领导随手交给我,“这个东西简单的,日天你去做吧”
正在b站摸鱼的我:

行吧这还能不干吗,还好不难
花了一上午完成脚本,忽然想到,糟了,怕不是中了圈套了,还要负责教会没有编程基础的同事怎么使用,不过机智如我立即想到了解决方案——封装成exe

通过百度得悉,常用python封装不过py2exe、PyInstaller、cx_Freeze等工具,最后确定使用 PyInstaller ,毕竟教程多,教程少我怕根本学不会……

以下开始花里胡哨的错误操作

那么开始了
首先当然是安装
进入cmd命令行

pip install pyinstaller -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

这一步的目的是防止出现国外源下载慢或者无法下载

若出现pip不是内部命令之类的,需要手动配置一下环境变量,可自行百度

接下来输入pyinstaller,若出现相关信息则安装成功。
若成功则可直接通过以下pyinstaller指令完成封装
至此,任务完成!

# 打包成一个文件
pyinstaller -F test.py
# 打包成文件夹(默认)
pyinstaller test.py

要是能那么简单就好了……大多数人在这一步都是要爆炸的
常见问题可概括为以下两种:

  • 封装过程中出现错误,显示各种importerror
  • 封装正常完成,但是双击后没有运行

我遇到的情况是importerror:unable to import required ……

在百度上得到的解决方案是,降级适应大法:给numpy降级,降级到1.16.1版本

pip uninstall numpy
pip install numpy==1.16.2

以及另一种解决方案,缺啥补啥大法:既然你import不了,大爷我给你人为在脚本内引入

import numpy.random.common
import numpy.random.bounded_integers
import numpy.random.entropy

我很负责任地告诉你,这两种方法除了让你有一种“本宝宝一下午都在忙碌”的充实感外,毫无作用!
而后我手贱又封装了一次,发现出现了截然不同的错误……

至此,卒

遂尝试第二个包,cx_Freeze
同样pip安装后,封装。
这玩意儿不仅时间长,封装后还特别大
但是!没有报错了!
成功封装了!
然而双击无反应……
通过命令行得知,仍然是numpy的问题

百度后又发现一种解决方案
安装python拓展库numpy-mkl
然而该网站下载速度感人,20min后,12M/200M
心态爆炸

认怂,询问公司大佬

正确方法

大佬审题30s后表示可能是因为版本冲突或者某些包不兼容的原因。
五分钟后大佬发来了封装好的exe,并且告诉我
“我帮你封装好了,顺便帮你改善了一下你脚本里的一些逻辑问题”

虚心请教以后,方法如下:
原理:通过python虚拟环境来配置一个干净的环境,里面没有各种乱七八糟的包,这样不容易出现版本问题。
第一步安装

virtualenv --version #若已安装,查看版本
pip install virtualenv==16.1  # 安装指定版本的virtualenv

若已安装,查看版本号若是16.4,则最好pip uninstall掉,否则容易出现
ModuleNotFoundError: No module named ‘distutils’
(此处又是一个坑,原因是在“加载模块挂钩”序列期间,hook-distutils.py缺少并且distutils模块不包含在最终的可执行二进制文件中。因此最好使用16.1版本)

virtualenv --no-site-packages myenv

通过以上命令行建立名字为myenv的虚拟环境(文件夹),注意,请在想放置的目录下执行该操作。
通过参数 --no-site-packages,就可以得到一个不带任何第三方包的干净的python运行环境。
随后可以在pycharm中直接open这个文件夹,并在终端中cd进入Script文件夹,执行activate操作,命令提示符就变了,会有(myenv)的前缀,表示当前环境是一个名为myenv的python环境。
接着就可以装需要的包以及试运行一下脚本了。
无误后,终端输入

pyinstaller -F xxxx.py #xxxx是你的要封装的脚本

在终端中运行一下无误!
完美!

记得一定要在封装后自己试运行一下,有时候出exe也无法成功运行的,到时候给了同事没法用就尴尬了。

打包python脚本的血与泪相关推荐

  1. python 打包exe_打包python脚本为exe的坎坷经历, by pyinstaller方法

    打包python脚本为exe的坎坷经历, by pyinstaller方法 又应验了那句歌词. 不经历风雨, 怎么见得了彩虹. 安装过程略去不提, 仅提示: pip install pyinstall ...

  2. python打包脚本_py2exe打包python脚本

    在工作中遇到将python脚本转换成exe可执行程序的需求,通过查询可以使用py2exe来构建满足要求的程序,这里简要说明一下使用步骤. 一.py2exe是一个将python脚本转换成windows上 ...

  3. 使用py2exe打包python脚本为exe可执行程序

    2019独角兽企业重金招聘Python工程师标准>>> python为解释性语言,对应的脚本文件需要在python的程序库中执行.为了方便在没有安装python的PC机上运行pyth ...

  4. 将python脚本打包为exe可执行文件

    技术背景 在很多情况下,编程人员是在Linux环境下完成的编程任务,但是更多的使用人员是在Windows环境下的,比方说,在参考链接1的文章中提到: 那么我们就不得不考虑一个环境转化的问题.pytho ...

  5. 【Python实用技巧】如何将Python脚本打包成exe可执行文件?

    相信大家也有过这样的困惑,本来已经使用Python写好了脚本代码,又不想公开代码逻辑,但又要给别人使用这些功能? 这可怎么办呢? 有没有什么办法,可以将Python脚本打包成一个exe文件,这样发布的 ...

  6. python 没反应 生成exe_通过 pyinstaller 将 python 脚本打包成可执行程序!

    1. 引言 很多时候,我们需要在 windows 环境编写和执行 python 脚本,但是去搭建一整套 python 运行环境看上去就过于繁琐了,即便是拥有 python 运行环境,脚本的执行也并不方 ...

  7. PyInstaller将python脚本打包成exe可执行程序

    一.PyInstaller说明 pyinstaller是一个第三方模块,托管在github上,它是一个把python脚本及其依赖的模块,打包成一个独立的可执行程序,使其能运行在没有安装python环境 ...

  8. Python脚本打包成exe文件

    打包工具有很多,这里使用pyinstaller 安装Pyinstaller 打开cmd,输入: pip install pyinstaller 安装完成后,检查安装是否成功: pyinstaller ...

  9. 将Python脚本打包成可执行文件

    Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...

最新文章

  1. 科学家认为“人脑+AI”至少有三大尺度:最低级是脑启发,最高级是创造机器意识...
  2. c++入门之运算符重载
  3. Android之UI控件
  4. 用神经网络二分类人脑与电脑
  5. oracle_j000,Process J000 died, kkjcre1p: unable to spawn jobq slave process引起的宕机
  6. 用SAP BSP应用实现图片灰度效果
  7. 使用Spring Roo进行快速云开发–第2部分:VMware Cloud Foundry
  8. Java形参的改变不会影响实参
  9. wordpress 301重定向 htaccess
  10. java商城项目中多线程执行_java多线程中执行多个程序的实例分析
  11. All Friends 极大团
  12. 设计模式-17-迭代器
  13. Encoding非常用编码转换
  14. perl:非贪婪的数量词
  15. android使用cpu软解,Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...
  16. web前端入门到实战:CSS box-sizing属性的正确用法
  17. oracle expdp作业外表报错ORA-20011KUP-11024ORA-29913
  18. 使用select2 实现拼音全拼和首字母 搜索
  19. lch 儿童围棋课堂 初级篇1 ( (李昌镐 著))
  20. 8道C语言笔试题及答案(2022发布)

热门文章

  1. Pytorch中contiguous()函数理解
  2. Docker Swarm 网络
  3. 统计当前代码量(以十万为标准)
  4. Z-File 开源免费自建个人网盘程序 Java/支持云存储
  5. 计算机学硕保博有必要读吗,学硕的直博或者保博是不是只能上本校的博士。如果这个学校没有博士点那是不是这个学校的学硕就不值得报了...
  6. 床垫上面直接铺床单吗
  7. java学习代码02 范围:方法、方法递归、面向对象、static和this关键字、多态
  8. 汽车三滤是什么 汽车三滤的使用注意事项
  9. 技术学习之路漫漫其修远兮,奋力勤学吾辈将上下而求索
  10. 让我知道生活如何教我做人