Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

2024-05-11

用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包。因为稍后在项目中需要使用numpy,所以我尝试打包以下测试代码:

import numpy
import kivy
kivy.require('1.0.6')
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

但是,我收到以下错误:

Traceback (most recent call last):
  File "setup.py", line 251, in <module>
    setup_package()
  File "setup.py", line 243, in setup_package
    setup(**metadata)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/core.py", line 169, in setup
    return old_setup(**new_attr)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_ext.py", line 59, in run
    self.run_command('build_src')
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/python-installs/myapp/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 153, in run
    self.build_sources()
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 164, in build_sources
    self.build_library_sources(*libname_info)
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 299, in build_library_sources
    sources = self.generate_sources(sources, (lib_name, build_info))
  File "/home/kivy/Desktop/cam/.buildozer/android/platform/build/build/other_builds/numpy/armeabi-v7a/numpy/numpy/distutils/command/build_src.py", line 386, in generate_sources
    source = func(extension, build_dir)
  File "numpy/core/setup.py", line 686, in get_mathlib_info
    raise RuntimeError("Broken toolchain: cannot link a simple C program")
RuntimeError: Broken toolchain: cannot link a simple C program


  STDERR:
# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=kivy,numpy --arch armeabi-v7a --copy-libs --color=always --storage-dir=/home/kivy/Desktop/cam/.buildozer/android/platform/build
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2

另外,这是我的buildozer.spec file:

title = My Application
package.name = myapp
package.domain = org.test
source.dir = .
source.include_exts = py,png,jpg,kv,atlas
version = 1.0

requirements = kivy,numpy

orientation = portrait
osx.kivy_version = 1.9.1
fullscreen = 0
android.api = 19
android.sdk = 20
android.ndk = 9c
android.arch = armeabi-v7a
log_level = 2
warn_on_root = 1

请注意,当我从 python 代码中删除“import numpy”并从 buildozer.spec 文件的需求列表中删除“numpy”时,我的代码已完美打包。我在预装了 Buildozer 的 VM Virtual Box 上运行它。

而且,不仅仅是 Numpy 给了我这个问题 - OpenCV 也给了我完全相同的错误。如果需要,将为此单独发布帖子。


Python for Android (p4a) 项目中报告了此问题here https://github.com/kivy/python-for-android/issues/1141,不知道它对于稳定的 p4a 来说是实际的。不过,通过链接您可以找到解决问题的 PR https://github.com/kivy/python-for-android/pull/1209。我没有测试过,但不同的人说它有效。

您可以尝试使用此修复程序构建 numpy,这就是您需要的:

  1. 确保使用命令清除当前构建过程中剩余的所有内容:

    buildozer distclean

  2. 使用命令克隆 p4a 分支并修复:

    git clone -b p4a_numpy_fix https://github.com/mahomahomaho/python-for-android fix-numpy

  3. 改变你的buildozer.spec使用 p4a 的克隆版本(使用您的实际路径):

    p4a.source_dir = /home/ubuntu/p4a_numpy_fix

并再次运行构建 apk。如果一切正常,您就可以构建 apk。如果没有,您将面临另一个错误,这里不能保证:(

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序 的相关文章

  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • 动态选取框文本

    是否可以将列表视图的 java 编码中的文本添加到 Android 中的选取框滚动中 如果可以 请告诉我如何做 如果需要 我将发布使用的代码 这是列表视图使用的 XML 如下
  • 使用 ElementTree 在 python 中解析 xml

    我对 python 很陌生 我需要解析一些脏的 xml 文件 这些文件需要先清理 我有以下 python 代码 import arff import xml etree ElementTree import re totstring wit
  • 单击输入字段会触发窗口调整大小

    我有一个带有徽标 菜单和搜索的标题 当我在桌面上时 我会按该顺序显示所有元素 但如果我的窗口宽度小于 980 像素 菜单会隐藏 有一个切换按钮 并且徽标会与nav并附在徽标之后 如果宽度更大 则徽标将再次分离并附加到 DOM 中的旧位置 w
  • Facebook Android 意图

    我对这个意图有疑问 这个意图是发送文本类型的消息 一切正常 电子邮件 短信 推特以及手机上的任何内容 但唯一有问题的是facebook 它会尝试以链接而不是文本的形式发布 Intent s new Intent android conten
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • 在Python中使用pil读取tif图像时出现值错误?

    我必须读取尺寸的tif图像2200 2200并输入 uint16 我将 PIL 库与 anaconda python 一起使用 如下所示 from PIL import Image img Image open test tif img i
  • Webview 电子邮件链接 (mailto)

    我有一个视图并查看该网站有用于发送电子邮件的 malito 代码 当我打开链接时 会出现错误 我希望当我打开链接时打开 Gmail 应用程序或其他电子邮件应用程序 感谢所有帮助者 public class teacher extends A
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • 如何将两列 pandas Dataframe 移动并堆叠为一列?

    我有一个下面提到的数据框 ETHNIC SEX USUBJID 0 HISPANIC OR LATINO F 16 1 HISPANIC OR LATINO M 8 2 HISPANIC OR LATINO Total 24 3 NOT H
  • QML MouseArea 将事件传播到按钮

    我正在开发一个应用程序 其菜单类似于 Android 版 Gmail 收件箱应用程序菜单 基本上 当您按下按钮打开菜单时 它就会滑入视图 用户可以将其滑开或按菜单上的按钮 对于滑动我使用了代码SwipeArea from kovrov ht
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中
  • 为什么从 openAI 导入 Universe 模块时出现“无效语法”错误

    当我导入时universe来自 openAI 的模块 我收到以下错误 Traceback most recent call last File
  • 读/写带有特殊字符的.txt文件

    I open Notepad Windows 并写 Some lines with special characters Special 并前往另存为 someFile txt 与Encoding set to UTF 8 在Java中我有
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • ProcessPoolExecutor 传递多个参数

    ESPN播放器免费 class ESPNPlayerFree def init self player id match id match id team 团队名单1 277906 cA2i150s81HI3qbq1fzi za1Oq5CG
  • 如何减少导航图标和工具栏标题之间​​的差距?

    我的问题是导航抽屉图标和工具栏标题之间 有多余的空间 示例图像如下 工具栏的xml视图是
  • Fragment 的 onSaveInstanceState() 永远不会被调用

    我试图将数据保存在片段的 onSaveInstanceState 中 但该方法从未被调用 有人可以帮忙吗 public class MyFragment extends Fragment Override public View onCre
  • Android - 保留或删除应用程序卸载时创建的文件

    我创建了一个应用程序 用于创建文件并将其存储到 SD 卡 有没有办法将文件夹与应用程序绑定 以便当用户在 Android 设备上运行卸载时删除所有文件 自 2009 年以来似乎有了一些进展 来自文档 http developer andro

随机推荐

  • 从Oracle表中删除重复行

    我正在 Oracle 中测试某些内容并使用一些示例数据填充表 但在此过程中我不小心加载了重复记录 因此现在我无法使用某些列创建主键 如何删除所有重复行并只保留其中一行 Use the rowid伪列 DELETE FROM your tab
  • List、IList、IEnumerable、IQueryable、ICollection,哪个返回类型最灵活?

    我之前已经在这里看到过这个问题 但我不满意我理解的完整后果 问题是使用 linq to sql 返回的数据层应该使用什么返回类型以获得最大的灵活性和查询能力 这是我读过 发现的 IEnumerable 是有限的 只允许向前读操作 IEnum
  • 更新 Azure Blob 上的 LastModified

    我正在移植代码以使用 C 中的 Azure 存储 SDK 传统上 我称其为更新修改文件的上次写入 修改时间 File SetLastWriteTimeUtc fileName lastWriteTimeUtc 要更新 blob 的上次修改时
  • 如何创建记录而不将其保存在数据库中

    我正在使用InventoryOdoo 12 的插件 但我的问题可能发生在任何模块上 在这个插件中 一个StockMove模型有一个move line ids field In the Detailed Operations对话框中 我们可以
  • Mojo 配置的自定义类型转换器?

    我需要使用自定义类型 例如LunarDate 在我的 Mojo 对象中 class MyMojo extends AbstractMojo parameter LunarDate lunarDate 我想配置参数
  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • Sourcetree 2.1.2.5 - 显示“未提交的更改”,但没有任何待处理的内容

    我有一个以前没有遇到过的问题 即使我没有什么可提交的 并尝试将我的分支重置为 Sourcetree 显示的最新提交Uncommitted changes 根据 Atlassian 论坛的说法 通常有两个原因 您的工作目录中有很多很多未暂存的
  • 在 MySQL 表中存储用户密码的最佳 PHP 哈希方法?

    我已经阅读 Stack Overflow 问题大约 15 分钟了 每一个问题似乎都与我之前读到的问题相矛盾 Bcrypt SHA1 MD5 等 我目前对我的密码进行 MD5 但我想让我的数据库在发生泄露时更加安全 我知道这个问题已经被问了一
  • 如何使用 PHP 以任意顺序进行字符搜索(12 个字母,其中 6 个字母构成一个单词)?

    我整天都在想这个问题 似乎无法找出一种记忆有效且快速的方法 问题是 例如 我有这些信 e f j l n rr t t u w x 12 个字母 我正在找这个词 海龟 6 个字母 如何使用 php 找到完整范围 12 个单词 中所有可能的单
  • 当列的数据类型为 int 时,如何用字符串替换 null

    我有一个包含 3 列的表和如下示例数据 所有列都是数据类型int 我有这个查询 select foodid dayid from Schedule 我要更换dayid用字符串 ifdayid null 为此我尝试了这个查询 select f
  • Kotlin 协程阻塞 Android 中的主线程

    我是 Kotlin 和协程的新手 我有一个fun在我的活动及其内部 检查User用户名和密码 如果为真 则返回Users object 一切都好 但是当我按下按钮时 我的活动被阻止并等待响应Users login 我用这个有趣的 priva
  • 提高打字速度? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 最近我注意到我的打字技巧还有很多不足之处 我在大学里已经编程几年了 打字速度从来都不是很重要 类并不关注你可以输出多少代码 而是关注如何设计和实现代码
  • 无法分配给对象“#”的只读属性“detachedCallback”

    我安装了A Frame https github com aframevr aframe by npm install aframe save 当我使用时 import aframe or use require aframe import
  • 使用“回形针”gem 和 Ruby on Rails 3 时出现问题

    我在运行 Snow Leopard v1 6 5 的 MacO 上使用 Ruby on Rails 3 我想使用 回形针 gem 所以我将它包含在我的 Gemfile 中 如下所示 gem paperclip gt 2 3 然后 在终端中运
  • min-height 和 height 属性有什么区别? [复制]

    这个问题在这里已经有答案了 我查了一下这个问题 但无法理解它与我的具体问题的关系 我将有问题的 html 设置如下 div class container fluid div class inner div class weatherdat
  • 使用 NSCache 实现缓存过期

    我正在使用 NSCache 在我的应用程序中实现缓存 我想为其添加过期时间 以便在一段时间后它将获取新数据 有哪些选择以及最好的方法是什么 我应该查看访问缓存时的时间戳并使之无效吗 缓存是否应该通过使用固定间隔计时器自动使自身失效 缓存是否
  • adler32 校验和的可靠性如何?

    我想知道与例如相比 adler32 校验和有多可靠 md5 校验和 维基百科上说 adler32 比 md5 可靠得多 所以我想知道有多少 以及以何种方式 更具体地说 我想知道它是否足够可靠 作为对大小为 20GB 以上的 tar 文件的长
  • 如何在 Python for 循环中获取 GAE ndb 中当前记录的密钥?

    我目前有一个网页 其中显示数据存储中的记录列表以及编辑链接 我想从数据库转换它 至新开发银行 我是 Python 和 GAE 新手 当前代码 tbody for listtype in listtypes tr td listtype Li
  • 单击 div 中的图像时如何翻转该 Div?

    好吧 我对编写 Javascript 知之甚少 我可以对其进行一些编辑 并且涉足了 CSS3 动画 我将向您展示我正在努力实现的目标 然后在下面进行解释 网站布局将是这样的 https i stack imgur com RMb4R jpg
  • Buildozer Numpy RuntimeError:工具链损坏:无法链接简单的 C 程序

    用 Python 编写我的第一个 Android 应用程序并使用 Buildozer 对其进行打包 因为稍后在项目中需要使用numpy 所以我尝试打包以下测试代码 import numpy import kivy kivy require