Python 2.7“wide-build”usc4与某些库不兼容吗?

时间:2015-07-27 02:19:47

标签: python python-2.7 unicode pycrypto

我需要能够处理一些具有高值的unicode字符,因此我使用选项--enable-unicode=ucs4 --prefix(“wide-build”)重新安装了Python 2.7.10。

然后我开始收到以下错误:

...
    from Crypto.Cipher import _ARC4
ImportError: /home/fast/usr/local/lib/python2.7/site-packages/Crypto/Cipher/_ARC4.so: undefined symbol: PyUnicodeUCS2_FromString

我意识到undefined symbol: PyUnicodeUCS2_FromString必须是因为新的构建,所以我尝试重新安装一切新的(新的Python和新的pip和新安装的库)。我仍然有同样的错误。

是否根本不可能将Crypto库与Python wide-build一起使用?

我找不到任何关于此的文档。有没有已知的解决方法?

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

在Python 2中没有令人满意的解决方案:UCS2和UCS4版本具有不兼容的ABI,并且需要从源构建库(因为大多数二进制鸡蛋是针对默认的UCS2 ABI构建的)。 This issue详细说明了问题以及将其纳入Python 3.3(PEP 393)的解决方案。

但是,使用UCS4版本的理由有点令人怀疑。 UCS2构建的Python完全能够与一些具有高值的unicode字符一起工作,并使用代理对来表示补充代码点。