文档章节

centos下打包py工程

 随性_
发布于 2016/03/31 17:47
字数 1038
阅读 513
收藏 5

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

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工具;需自己进行下载,然后安装;

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

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

3:twisted安装较为复杂,直接通过pip install twisted==15.5.0安装会报缺少python.h文件,这是因为安装twisted的时候需要安装python-devel,但是python-devel不是很好找的原因有二:

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

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

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

./configure
make
make install

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

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

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

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;

© 著作权归作者所有

粉丝 9
博文 19
码字总数 21957
作品 0
南昌
私信 提问
iOS项目自动打包脚本--Ipapy

Ipapy 是 iOS项目自动打包脚本 1.脚本自动打包 2.上传到fir.im 3.发送邮件给测试人员 需要安装的相关指令软件: 1.python 2.7 2.xcode 3.fir.im指令 使用方法: 1.安装xcode 2.安装fir.im的指令...

hades0918
2016/03/23
752
0
三步把Python3程序打包为exe

windows 10 下打包必须安装以下工具:( 本人开发环境:python3.5 + pyqt5 ) 1、安装 pywin32 pip install pypiwin32 也可以下载后安装 pywin32-220.win32-py3.5.exe (Intel) 、或 pywin3...

在水一方发盐人
2016/10/16
105
0
Python制作和使用egg

经常接触Python的同学可能会注意到,当需要安装第三方python包时,可能会用到easyinstall命令。easyinstall是由PEAK(Python Enterprise Application Kit)开发的setuptools包里带的一个命令,...

wenqi_arthur
2016/01/03
235
0
Using Bootchart on Android 在开机测量中的应用

Bootchart is a system designed to show a graphical display of the activity of a system during boot. 。。。 省略官方简介,下面是相关连接: http://www.elinux.org/UsingBootcharton......

austinyancanlin
2015/09/01
101
0
利用pyinstaller将python脚本打包发布

之前写了一个小工具,将excel配置表转换为json、xml、lua等配置文件。最近在学习egret,正好需要转换配置文件,刚好就用上了。然而当我想把工具拷到工作目录时,就发愁了。之前我为了方便扩展...

xsster
2017/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一篇文章教你轻松使用fastjson

前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y JSON相信大家对他也不陌生了,前后端交互中常常就以JSON来进行数据交换。而有的...

Java3y
29分钟前
4
1
分组功能(tapply,by,aggregate)和* apply系列

每当我想在R中做“ map” py任务时,我通常都会尝试在apply系列中使用一个函数。 但是,我从未完全理解它们之间的区别-{ sapply , lapply等}如何将函数应用于输入/分组输入,输出将是什么样...

javail
29分钟前
4
0
PHP环境搭建之单独安装

还在使用PHP集成环境吗?教你自定义搭建配置PHP开发环境,按照需求进行安装,安装的版本可以自己选择,灵活性更大。 目录: 1. 安装Apache 2. 安装PHP 3. 安装MySQL 4. 安装Composer 观看:h...

不冷的大叔
41分钟前
4
0
为什么JavaScript变量会以美元符号开头?

我经常看到JavaScript带有以美元符号开头的变量。 您何时/为什么选择以这种方式为变量添加前缀? (我不是在问您在jQuery和其他语言中看到的$('p.foo')语法,而是普通变量,例如$name和$orde...

技术盛宴
44分钟前
4
0
TCP 三次握手

https://my.oschina.net/u/4198159/blog/3141874

奋斗的小牛
53分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部