个人使用过程,确切地说是折磨过程。python
环境:Ubuntu 14.04 desktop + python3.4.2+cx_Freeze4.3.3linux
我是想写个程序,可以在Linux下检索文本内容中的固定关键字。可是这脚本不光本身用,还要发布给别的人。这时问题就来了,万一别人的环境下,没有装Python3怎么办呢?在看书的时候发现能够把Python脚本打包成执行程序,因而就打算搞一个,噩梦啊,10天时间啊!(固然,也是我水平不行)python2.7
首先这脚本是在Windows 7 64bit下写的,而且也是在这个环境下测试的。这环境下Python3.4.2的安装很是简单,官网上应有msi包,直接装便可,运行也没有问题,还带有一个idle的编辑器。编辑器
写代码的过程略过不提,可是打包的时候这顿折磨啊。ide
首先是在Windows下打包就不断失败,各类报错,主要就是各类找不到库文件之类的。后来发现把cx_Freeze的源代码直接解压到Python3.4的安装目标下scripts子目录下,就能正常运行了,或者在安装的时候(cx_Freeze是有msi包的)选择安装到任意目录,而后选择你的Python3.4安装路径。用cxfreeze.bat -h 测试是好的,可是一运行就说 没有basename这个没有搞定,我想反正是要在Linux下用,就放弃Windows平台的测试,转而进行Linux下的研究。测试
首先第一个问题就是在Linux下,Python2和Python3是同时存在的,对我这个新手的影响很大,通过Ubuntu和CentOS的测试,都没有装成功。最后我仍是回到Ubuntu14.04 Desktop,先用spa
dpkg -l | grep python2orm
找到全部的Python相关包,再用ip
sudo apt-get remove python2.7 --purge资源
命令,逐个干掉了Python2.7.8的相关软件包,连gedit都没有放过。而后测试,发现自带的Python3是3.4.0,并且没办法经过apt-get 升级,说已是最新版了。在此基础上直接编译cx_Freeze说是找不到Python.h,没办法,只好下载Python3.4.2的源码,编译安装。
这个过程简单,解压
./configure
make
sudo make install
咦,问题又来了,说是找不zlib
No module name zlib
百度半天,一顿中英文资料和求助朋友,感受是缺库吧。先按网友说的,把zlib1g-dev(其它发行版上不叫这个名的)包装上,
而后再:
./configure --with-zlib
或者
./configure --with-zlib=/usr/include
可是这个选项已经无效了,结果试了另外一个方法,在Python源码的Module下,有个Setup.dist文件,其中有一行是
#zlib zlibimport................
去掉注释,从新
./configure
make
sudo make install
注意,这里要把用过的源代码删掉,从新解压一份再Configure。
而后时行Python环境测试import zlib,没有报错,OK,这关过了
这时再去编译cx_Freeze,注意这个是Python的扩展,要在源代码目录下运行:
Python3.4 setup.py install
来编译。
而后就又报错,一堆字符,看看发现是没有找到libpython3.4这个库文件,注意这里它报错说找不到
lpython3.4,而不是libpython3.4
Python是在/usr/lib/python3.4/config-3.4m/找库文件,可是Ubuntu并无把库放在这里
而后我又从新编译Python,此次用的是
./configure --prefix=/usr
make
sudo make install
我感受这是装在系统自带程序的目录里,应该没问题了吧,结果仍是找不“lpython3.4”
因而:locate libpython3.4
发现这库的直接文件居然在
/usr/lib/i386-linux-gnu下,Ubuntu啊,这是什么文件组织结构啊!!!
固然,其它地方仍是有连接,我也只能本身作个连接了
因而(注意sudo,由于要在系统目录里建连接,普通用户是建不了的):
sudo ln -s /usr/lib/i386-linux-gnu/libpython3.4m.so.1.0 /usr/lib/python3.4/config-3.4m/libpython3.4.so
注意名字别打错了哦,错了就闹心了。
再来,
Python3.4 setup.py install
哦又错了,哈哈小毛病,原来系统要把cxfreeze(注意这名字啊,和包的名字不同)放到/usr/bin下,因此还得:
sudo Python3.4 setup.py install
OK了,这回编译经过,
直接 :cxfreeze -h 测试也没有问题,把本身的代码搞过来,打包,OK,没问题。
哦,哦,别紧张,是我代码有问题了,哈哈,这个过程没问题了。
考虑到本身查资料的时候费劲,可能Python3和cx_Freeze4.3.3都比较新,这方面的资源仍是少,就发出来,但愿对有些朋友有用。