Kivy, ModuleNotFoundError: No module named '_ctypes' when building an android app
Kivy, ModuleNotFoundError: No module named '_ctypes' when building an android app
我正在尝试构建我的第一个 android 应用程序。我安装了 Kivy、buildozer 并将 "hello world" 编码为 here。然后,我输入 "buildozer android debug" 并抛出错误,"bla bla bla sdk directory is not specified" 在此命令中:
/usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=test2 --bootstrap=sdl2 --requirements=python3,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build" --ndk-api=21
所以我在命令中添加了一些参数并使其工作:
/usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=test2 --bootstrap=sdl2 --requirements=python3,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build" --ndk-api=21 --sdk-dir=/home/whiteblackgoose/.buildozer/android/platform/android-sdk --ndk-dir=/home/whiteblackgoose/.buildozer/android/platform/android-ndk-r17c
所以当我尝试 运行 它时,它抛出了一个新错误:
File "/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/Lib/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
STDERR:
我重新安装了 cython 并尝试导入 ctypes 和 _ctypes:
whiteblackgoose@whiteblackgoose-VirtualBox:~/PycharmProjects/mobileapp/test2$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> import _ctypes
>>>
如您所见,当我导入它们时没有问题。但是如果我 运行 上面的命令,它会说 "ModuleNotFoundError: No module named '_ctypes'".
如何让 buildozer 可见这个模块?或者 mb 问题是由安装的软件包或某些东西的不正确版本引起的...
您需要安装 libffi 头文件。这些来自 Ubuntu 上的 libffi-dev
包,通常在其他发行版中也有类似的东西。
之后,通过删除应用程序目录中的 .buildozer
目录并重新构建来清理构建。
在 Ubuntu 20.04 中遇到了同样的问题。
如上所述,我确实安装了 libffi-dev
packag,但它没有帮助。
我删除了 ~/.local/ 目录并重新尝试构建 apk;它对我有用。
我正在尝试构建我的第一个 android 应用程序。我安装了 Kivy、buildozer 并将 "hello world" 编码为 here。然后,我输入 "buildozer android debug" 并抛出错误,"bla bla bla sdk directory is not specified" 在此命令中:
/usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=test2 --bootstrap=sdl2 --requirements=python3,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build" --ndk-api=21
所以我在命令中添加了一些参数并使其工作:
/usr/bin/python3 -m pythonforandroid.toolchain create --dist_name=test2 --bootstrap=sdl2 --requirements=python3,kivy --arch armeabi-v7a --copy-libs --color=always --storage-dir="/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build" --ndk-api=21 --sdk-dir=/home/whiteblackgoose/.buildozer/android/platform/android-sdk --ndk-dir=/home/whiteblackgoose/.buildozer/android/platform/android-ndk-r17c
所以当我尝试 运行 它时,它抛出了一个新错误:
File "/home/whiteblackgoose/PycharmProjects/mobileapp/test2/.buildozer/android/platform/build/build/other_builds/hostpython3/desktop/hostpython3/Lib/ctypes/__init__.py", line 7, in <module>
from _ctypes import Union, Structure, Array
ModuleNotFoundError: No module named '_ctypes'
STDERR:
我重新安装了 cython 并尝试导入 ctypes 和 _ctypes:
whiteblackgoose@whiteblackgoose-VirtualBox:~/PycharmProjects/mobileapp/test2$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ctypes
>>> import _ctypes
>>>
如您所见,当我导入它们时没有问题。但是如果我 运行 上面的命令,它会说 "ModuleNotFoundError: No module named '_ctypes'".
如何让 buildozer 可见这个模块?或者 mb 问题是由安装的软件包或某些东西的不正确版本引起的...
您需要安装 libffi 头文件。这些来自 Ubuntu 上的 libffi-dev
包,通常在其他发行版中也有类似的东西。
之后,通过删除应用程序目录中的 .buildozer
目录并重新构建来清理构建。
在 Ubuntu 20.04 中遇到了同样的问题。
如上所述,我确实安装了 libffi-dev
packag,但它没有帮助。
我删除了 ~/.local/ 目录并重新尝试构建 apk;它对我有用。