Kivy / Buildozer导入错误 - pymssql.so是64位而不是32位

问题描述 投票:11回答:1

我正在使用64位Kivy / Buildozer VM来构建和部署Kivy应用程序到Android Lollipop(armeabi-v7a 32位arch)。

Buildozer构建是成功的但是在执行应用程序和导入pymssql包(用于连接到远程MS SQL服务器)时,我收到以下错误:

I/python  ( 5335):    File "/build/phytogp/android/app/main.py", line 4, in <module>
I/python  ( 5335):    File "/build/phytogp/android/app/views/apps/phyto_app.py", line 45, in <module>
I/python  ( 5335):    File "/build/phytogp/android/app/services/twilio_service.py", line 2, in <module>
I/python  ( 5335):  ImportError: dlopen failed: "/data/data/com.phyto.phytogp/files/app/lib/python2.7/site-packages/pymssql.so" is 64-bit instead of 32-bit

据我了解,为pymssql-2.1.3-cp27-cp27mu-manylinux1_x86_64.whl预制的pymssql轮应该支持64和32位拱。

如何获得支持32位的pymssql.so

python python-2.7 kivy buildozer
1个回答
0
投票

有两件事需要检查:

  1. 确保打包32位版本。你说轮子应该支持64位和32位,但你参考了x86_64轮版本。在他们的pypi页面上,他们有一个i686版本,这是你想要的32位版本。
  2. 即使它是32或64,它必须是ARM> = v7a编译。除非你的轮子是专门为android编译的,否则很有可能它不起作用,因为Linux和Android上的libc不一样。所以你会遇到二进制不兼容问题。

这就是为什么对于那种库,你需要在python-for-android中编写一个配方来编译Android的库。

© www.soinside.com 2019 - 2024. All rights reserved.