没想到隔了将近一年,今天正好要用,花了二个多小时,把pyinstaller的问题终于解决了,实在是踏破铁鞋啊。
话不多说,根本原因实际在于pyinstaller必须要使用动态链接库,而不是python默认安装的静态链接库方式。
安装:
CentOS6.2 64位,默认已经装好gcc-4.4.5-6.el6.x86_64
从官网下载Python-2.7.2.tgz,话说现在python.org官网除了download还多了一个中文写的“下载”,这个真是为了中国特色而准备的啊,哈哈,玩python的都知道为啥不能用download,现在我们可以直接用“下载”来直接下载原版的python,而不需要国内中转了。
下载pyinstaller,现在pyinstaller终于出1.5.1的稳定版本了,我用的就是pyinstaller-1.5.1.zip
解压python2.7.2,注意,第一步最重要,和默认安装不一样,必须打开动态链接库
./configure --enable-shared
然后报了一大堆提示,如果没有啥大错误的话,就直接make,然后再make install吧,如果以前装过python,请一定记得先make clean一下。
这样装完,直接运行python,可能会提示:
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
如果是这样的提示,要手工更改一下,按以下操作,先找到python的安装目录,我没指定,默认是在/usr/local/下的
vi /etc/ld.so.conf
不要动上面的原本那行,将python的lib目录加上去,如下
/usr/local/lib
然后保存退出,执行:
/sbin/ldconfig
执行完毕后,再看一下是否已经找到libpython2.7.so.1.0,如下命令
/sbin/ldconfig -v | grep python
如果有了,那再运行python就OK了
另外,如果你默认已经装过python的低版本了,可能还要对python做更名处理,这个我就不多说了。
现在,进入pyinstaller的目录,执行
python Makespec.py --onefile test/a.py
python Build.py a/a.spec
就成功在dist下找到执行文件了。
目前还在研究是否真的可以离开环境正式运行,我觉得只要有装gcc的环境,应该都是可以运行的。
阅读(2135) | 评论(0) | 转发(0) |