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

标签 python python-2.7 kivy buildozer

我正在使用 64 位 Kivy/Buildozer VM 构建 Kivy 应用并将其部署到 Android Lollipop(armeabi-v7a 32 位架构)。

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 的预构建 pymssql-2.1.3-cp27-cp27mu-manylinux1_x86_64.whl 轮应该支持 64 位和 32 位拱。

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

最佳答案

有两件事要检查:

  1. 确保您打包了 32 位版本。你说轮子应该支持 64 位和 32 位,但你引用了 x86_64 轮子版本。在他们的 pypi 页面上,他们有一个 i686 版本,这是您想要的 32 位版本。

  2. 即使是 32 位或 64 位,也必须是 ARM >= v7a 编译的。除非你的 wheels 是专门为 android 编译的,否则它很可能无法工作,因为 libc 在 Linux 和 Android 上是不一样的。所以你会遇到二进制不兼容问题。

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

关于python - Kivy/Buildozer 导入错误 - pymssql.so 是 64 位而不是 32 位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49122655/

相关文章:

python - “numpy.float64”对于 scipy 函数质心不可迭代

python - 在用户提交表单时使用 Tweepy OAuth 对用户进行身份验证

python - 如何叠加不同日期的图?

正则表达式分为几组

python - Python 和 Kivy 语言之间 Kivy Children Widget 的实例化

python - 使用 pandas 从一列字典创建一个热编码

python - 在 print 语句中连接值

python - dll在使用memset时导致Python崩溃

python - (Kivy Python) 实例后重置 ScreenManager 屏幕方向

python - 无法使用 pip 在 MacOS10.15 上安装 Kivy