Linux下的python下安装
一.编译
1.获取源代码 Python-2.5.5.tar,拷贝到/users/ems目录下。
2. 解压tar xvf Python-2.5.5.tar,解压到了/users/ems/ Python-2.5.5目录下。
tar xvf Python-2.5.5.tar
3. 进入/users/ems/ Python-2.5.5目录,进行编译安装
32位的Linux或unix
$ ./configure CFLAGS=-fPIC CPPFLAGS=-fPIC
64位的Linux或unix
$ ./configure CFLAGS=-fPIC CPPFLAGS=-fPIC CC="gcc -m64" |
64位的solaris unix(CC编译器)
./configure CFLAGS=-fPIC CPPFLAGS=-fPIC CC="cc -m64" CXX="CC -m64" |
或者(参考Qt的CC编译选项)
export CC="cc -xtarget=ultra -xarch=sparc -m64" export CXX="CC -xtarget=ultra -xarch=sparc -m64" ./configure CFLAGS=-fPIC CPPFLAGS=-fPIC |
或者
./configure CFLAGS=-fPIC CPPFLAGS=-fPIC CC="cc -xtarget=ultra -xarch=sparc -m64" CXX="CC -xtarget=ultra -xarch=sparc -m64" |
IBM AIX (python2.7)(参见附录3)
./configure --with-gcc="xlc_r -q64" --with-cxx="xlC_r -q64" --disable-ipv6 AR="ar -X64" |
$ make clean
$ make
$ make install
或$ make setup.py install (替换原来的python)
注意:
(1)configure的参数很多,以上参数在redhat上是必需的。通过设置参数可以编译成动态库。
(2)执行make install时,需要root权限。因此首先切换到root用户:
$ su root
在Unix下面由于安全级别高,默认的shell中,很多root用户无法到make,提示“make : 命令没有到”,此时,root用户可以进入tcsh下执行make install.
(3) 执行了make install后,python的头文件、静态库文件libpython2.5.a和可执行文件python2.5分别被拷贝到
/usr/local/include/python2.5
/usr/local/lib/python2.5/config
/usr/local/bin
在AIX上编译时,头文件pyconfig.h要使用编译目录下生成的pyconfig.h
二. 替换redhat linux中默认的Python
一般情况下redhat linux下系统默认已经装了python但版本是2.4.x;本次安装后在shell中输入:
#python
会发现显示结果:
# python
Python 2.4.3 (#1, Dec 11 2006, 11:38:52) [GCC 4.1.1 20061130 (Red Hat 4.1.1-43)] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. |
显示默认版本还是2.4.x的,而不是新编译安装的Python 2.5.5.解决办法为在终端输入shell命令,将默认python改为Python2.5:
sudo ln -sf /usr/local/bin/python2.5 /usr/bin/python
执行完成后,在终端可以输入shell命令python测试:
# python
Python 2.5.5 (r255:77872, Aug 26 2010, 14:41:56) [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2 Type "help", "copyright", "credits" or "license" for more information. |
可见已经更换为新编译的Python 2.5.5。
三.PYTHON的环境变量设置
平台中的pythonengine需要在Python的头文件和库的支持。具体的信息已经在pythonengine的pro文件中设置好了,需要在.cshrc中增加三个环境变量。
>>#### PYTHON Environment >>>># setenv PYTHON_INCLUDE /usr/local/include/python2.5 setenv PYTHON_LIB /usr/local/lib/python2.5/config |
当然,还有CSLib这个环境变量
setenv CSLIB_DIR /ems/vobs/CSLib/python_common |
四.“网络设置”启动出错的问题
红帽linux自带了python2.4.3,并且将软连接/usr/bin/python指向了/usr/bin/python2.4。
图形平台使用的是python2.5,在编译python2.5时,会将/usr/bin/python
linux中的网络设置使用了linux自带的python2.4.3。
su root mv python python2.5_bak rn –s /usr/bin/python2.4 python |
附录:脚本编写中的问题
1. 脚本中字符串连接有中英文混搭的问题
中文自动为unicode,英文为latin,造成连接错误,需要将英文的转换为gbk.(也许还有别的办法,还没试过),下面是代码实例
a = "java -jar " a += graph.GetEnvValue("SOPHIC_DEPLOY_DIR") a += "/bin/cad/cadviewer_run.jar " a += graph.GetEnvValue("SOPHIC_DEPLOY_DIR") graph.ShowMessage(a) cmd = a.encode('gbk') + "/cad/狮山变.dxf" graph.ShowMessage(cmd) tip = "" graph.System(cmd,tip) |
2. python 的字符串UnicodeDecodeError(同上)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range(128)
以下代码将引起上述错误
# -*- coding: gbk -*-
m = '测试' + u'test'
即当str与unicode字符串连接操作时出现这个出错,估计出错原因在于,当对于str + unicode这样两种类型字符串相加时,python先将str字符串转为unicode,再两个unicode字符串相加,但是对于str转unicode,python使用了默认的ASCII编码进行str字符串的解码,这时如果str字符串含有中文等非ASCII字符就出现了上述错误
解决方法:
(1)指定str转unicode时的解码,不采用默认,对上例
m = '测试'.decode('gbk') + u'test'
(2)将unicode转为str,两个str相加,对上例
m = '测试' + u'test'.encode('gbk')
附:
'测试' 的 unicode编码 = u'\测\?'
'测试' 的 gbk编码python默认安装路径 = '\xb2\xe2\xca\xd42'
'测试' 的 utf-8编码 = '\xe6\xb5\x8b\xe8\xaf\x952'
相关参考
Python Encodings and Unicode
eric.themoritzfamily/2008/11/21/python-encodings-and-unicode/
3. aix6.1编译python
1.解压python2.5.5
2.在python2.5.5目录下执行./configure --with-gcc="xlc_r -q64" --with-cxx="xlC_r -q64" --disable-ipv6 AR="ar -X64"
3.修改Modules/ld_so_aix文件170行,增加-lbsd,即改为“CCOPT="$CCOPT -Wl,-bM:SRE -Wl,-T512 -Wl,-H512 -lm -lbsd -o $objfile"”(注意:在AIX5.3中不需要添加-lbsd)
4.编译tcl8.4和tk8.4,解压进入unix目录,执行./configure --enable-shared --enable-64bit --enable-threads,手动修改Makefile把CC = cc_r改为CC = xlc_r,执行make,make install,进入/usr/local/lib目录将库的.so后缀复制为.a后缀
5.在python2.5.5中执行make,make install窗体底端
4. aix5.3编译python
1.解压python2.5.5
2.在python2.5.5目录下执行./configure --with-gcc="xlc_r -q64" --with-cxx="xlC_r -q64" --disable-ipv6 AR="ar -X64"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论