该项目使用的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;