问题描述:今日在对py文件进行编译加密的时候,导入模块时提示undefined symbol: PyUnicodeUCS4_DecodeUTF8
。
原因:
python默认以UCS2形式编译,但模块是以UCS4编译的
验证:新建check.py
import sys
if sys.maxunicode > 65535:
print 'UCS4 build'
else:
print 'UCS2 build'
python check.py
即可验证是UCS2
还是UCS4
。问题解释参看the official FAQ
解决方法:
以UCS4
重新编译Python
以Python-2.7.15
为例,进入源码目录
./configure --enable-unicode=ucs4 --with-ssl
make && make install
注意编译后再次运行python check.py
检查是否正确。如果还是UCS2
,那么检查指向usr/bin/python
的软连接是否正确,看看which python
的结果是不是usr/bin/python
。如果不是,那么需要重新建立软连接,或者检查user profile (例如~/.bashrc
)里面的$PATH
在usr/bin
前面是否有指向其他python版本的路径。