python打包成二进制_用pyinstaller把python脚本打包成二进制文件

最近在写一些python脚本,由于涉及很多pip库,再加上内网无法直接访问互联网,所以安装起来很麻烦。所以就想到怎么把脚本打包成二进制文件,相同的环境的情况下就可以解决装包这个麻烦事。在这个过程中也是踩了很多坑,最后还是在大佬的点拨下完成了,在这里记录总结下分享给大家,希望对大家有用。

前言

在编写python脚本的时候,有时候我们会需要很多依赖库,如果只是脚本,在别的机器上运行就也需要安装这些依赖库,这是一个非常麻烦的时候,解决这个问题的思路有以下几种:(1)、用docker,在docker里解决这些依赖,然后封装成镜像,这样就可以在各种机器上运行了;(2)、使用virtualenv进行本地包安装,然后把安装好的文件拷贝到服务器上;(3)、把包打成二进制文件;

由于我们内部业务没用docker,所以第一点就排除了,至于第二点还是比较麻烦,直接舍弃。妥妥的研究第三种了。在用pyinstaller的时候踩了几个坑:(1)、你原始主机(准备用来打包)的主机,如果环境比较混乱,比如有pyhton2也有python3,在用pyinstaller的时候会出现一些莫名奇妙的错误(就是打出来的包用不了),我在这个坑里躺了很久;(2)、如果你在centos7上打的包,跑到centos6上运行脚本,会报一些openssl、glibc等版本太低的问题,这种情况下,你在centos7上打的包就只能在centos7上跑,要在6上跑,只能用centos6的服务器打包;

强烈建议:最好在什么环境下打的包就在相同的环境下跑。比如我系统版本是CentOS7.5,python版本是2.7.5,那我在这个上面打的包就在这类型的机器上跑这个脚本,基本是没问题的。

一、安装

1、安装pip(可选)

看你服务器上是否有pip,如果没有,需要安装,安装方法如下:

# 通过yum来安装

yum install-y epel-release

yum install-y python-pip

# 通过安装脚本来安装(如果centos6的系统可能不适合)

curl https://bootstrap.pypa.io/get-pip.py-o get-pip.py

python get-pip.py

2、安装pyinstaller

# 在7的系统上可以直接执行下面语句,经过测试最新3.4的版本还有一些不知名的问题

# 当然不是所有的机器都能装上3.3版本,如果在安装的时候报ImportError....,

你可能感兴趣的:(python打包成二进制)