centos下打包py工程

该项目使用的python编程环境是2.7.10;所须要使用的第三方包有:
python

twisted==15.5.0
protobuf==2.6.1
PyYAML==3.11
enum

# dev suite
sphinx
ipython
ipdb
pylint
pep8
mock
nose
coverage
pyinstaller

所使用的虚拟机是centos7,自带python2.7.5;可是不包含pip和setuptools工具;需本身进行下载,而后安装;linux

1:安装pip、setuptools,首先将下载的tar.gz格式的安装包进行解压,而后进入根目录,经过python setup.py install命令安装便可
编程

2:除了protobuf和twisted均可以经过pip install {script_name}进行安装;ubuntu

3:twisted安装较为复杂,直接经过pip install twisted==15.5.0安装会报缺乏python.h文件,这是由于安装twisted的时候须要安装python-devel,可是python-devel不是很好找的缘由有二:centos

1.在centos下是python-devel,在ubuntu下称之为python-dev;
2.yum search python | grep -i devel,这条命令能找到适配虚拟机环境中python相对应的python-devel包而后进行安装便可;

4:protobuf安装也较困难,经过pip install twisted安装也不能成功;至今我也没明白后面装成功的真正缘由;只能把失败到成功所作的动做进行记录一下:
python2.7

  • 先将安装包进行解压,进入根目录,依次执行:工具

./configure
make
make install

而后执行protoc --version,显示libprotoc 2.6.1即表示安装成功;ui

  • 进入根本录中的python文件夹,执行python setup.py install会显示安装成功;google

而后经过pyinstaller 进行打包,pyinstaller我是经过安装包进行解压编译安装的;经过如下命令进行打包;如下的main.py是工程中的入口文件:centos7

python pyinstaller.py -F /home/abc/robot/project/Robot_sh/robot/main.py

在生成的文件夹main中子文件夹dist包含main可执行文件,还须要把配置文件放入dist目录下;

而后在dist目录下执行

./main

会报以下错:

这个错的缘由是protobuf没有彻底打包进可执行文件中;

后来在centos下安装pycharm;本人用的版本:pycharm-community-5.0.4;将安装包进行解压后,在根目录下的bin目录执行如下命令:./pycharm.sh便可可视化的运行该IDE;在File-->Settings-->Project Interpreter中找到安装成功的protobuf,鼠标选中安装的protobuf的那行点击右上角减号,将其卸掉;而后再点击右上角+号经过该搜索找到protobuf,选定版本从新进行安装protobuf;若是安装成功了;说明protobuf已经成功进行安装了;

而后再作如下操做:

python pyinstaller.py -F /home/abc/robot/project/Robot_sh/robot/main.py  # 在pyinstaller目录下打包
cp -rf /home/abc/robot/project/Robot_sh/robot/robot.yaml robot.yaml  # 在dist目录下将配置文件拷入
tar -zcvf robot_sh_V0.5.tar.gz ./*  # 经过tar命令进行打包名为robot_sh_V0.5.tar.gz安装包

项目需求设置临时环境变量:
export PYTHONPATH=$PYTHONPATH:/home/abc/robot/project/Robot_sh

linux下环境编程的朋友可能会更加简单:

1.经过pip install pyinstaller安装pyinstaller
2.新建一个存放打包后文件的文件夹,在该文件夹根目录中执行pyinstaller -F /home/abc/robot/project/Robot_sh/robot/main.py(本身linux环境中的的main文件位置,下同),在文件夹中会生成build、dist文件夹、main.spec文件;进入dist文件夹,有个main文件;该main文件就是可执行文件了;
3.将工程中的配置文件robot.yaml拷入dist目录下:cp -rf /home/abc/robot/project/Robot_sh/robot/robot.yaml robot.yaml
4.在dist根目录下执行./main;观察是否报错;若是不报错就说明该可执行文件打包成功;
5.修改main的名称,mv main robot
6.打包成tar.gz格式包,在dist目录下:tar -zcvf robot_sh_V0.5.tar.gz /*
7.若是在第4步报错的话,如no module named pkg_resources,说明您的protobuf没有彻底打包进去;

注意的问题:

若是您自带的python环境是2.6的,那么在linux下安装python2.7的时候千万要注意不要简单粗暴的直接安装,自带的python2.6会部分被覆盖;致使两个python环境会很是乱。具体正确操做可自行google;

相关文章
相关标签/搜索