错误的ELF类Python

2024-10-01 07:15:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图安装这个库用于LZJB的压缩。PyLZJB LINK

库是C库的绑定,文件位于此处PyLZJB.so


不幸的是,当导入时复制到site packages目录时,我得到了“错误的ELF class”错误。在

>>> import PyLZJB
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: ./PyLZJB.so: wrong ELF class: ELFCLASS32

帮助太好了。:)

PS:我正在运行Ubuntu10.464位


编辑:

如果有人能给我推荐一种替代的压缩算法,我也会很高兴的。:)

该算法适用于HTML压缩,同时也需要客户端的Javascript解压/压缩支持。在

我真的希望有人能帮上忙。谢谢各位!在


Tags: 文件import目录mostsopackages错误link
3条回答

您正在运行64位Python解释器并尝试加载32位扩展,这是不允许的。在

您需要为相同的体系结构编译Python解释器和扩展。虽然您可以得到一个32位的Python解释器,但最好是有一个64位的扩展名。在

您应该做的是获取LZJB的源代码,然后自己构建它以获得一个64位的共享对象。在

If someone could suggest me an alternative compression algorithm I would be equally happy.

总是有好的旧deflate,一个更常见的LZ压缩家族成员。JavaScript implementationHow to handle raw deflate content with Python's zlib module。在

在相对较慢的客户端代码中,压缩提交数据会带来大量开销,而且提交将从中获得的原始字节并非易事。在

do they Gzip GET parameters within a request?

GET form submissions中的查询字符串本质上必须很短,否则将超出浏览器或服务器的URL长度限制。压缩这么小的东西是没有意义的。如果你有很多数据,它需要以POST形式。在

即使在POST表单中,默认的enctypeapplication/x-www-form-urlencoded,这意味着大部分字节将被编码为%nn序列。这将使表单提交膨胀,可能超出原始未压缩的大小。要提交原始字节,必须使用enctype="multipart/form-data"格式。在

即使这样,你也会遇到编码问题。JS字符串是Unicode而不是字节,它将使用包含表单的页面的编码进行编码。这通常应该是UTF-8,但是实际上不能通过编码生成任意的字节序列来上传,因为许多字节序列在UTF-8中是无效的。您可以通过将每个字节作为一个编码单元编码为UTF-8来获得unicode中的字节,但这会使压缩字节膨胀50%(因为超过0x80的一半代码单元将编码为两个UTF-8字节)。在

理论上,如果您不介意失去适当的国际化支持,您可以将页面作为ISO-8859-1提供,并使用escape/encodeURIComponent习惯用法在UTF-8和ISO-8859-1之间进行转换以获得输出。但这行不通,因为浏览器撒谎,实际上使用Windows代码页1252对标记为ISO-8859-1的内容进行编码/解码。你可以在每一个字节的编码中使用更多的字符。在

您可以通过使用base64之类的方法来避免编码问题,但是,同样地,您有更多的手动编码性能开销和33%的膨胀。在

总之,所有的方法都是不好的;我不认为你能从中得到多少有用的东西。在

您可以运行32位Python或编译自己的PyLZJB,而不是使用预构建的二进制文件。或者从某个地方得到一个64位的二进制PyLZJB。在

相关问题 更多 >