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;

相關文章
相關標籤/搜索