1

经过数小时的试错,我希望有人可以在这里帮助我。

我得到了我的 MacBook Air(M1,2020)并想在上面使用 kivy 进行 python 编程。当我 3 个月前第一次购买笔记本电脑时,我花了很多工作才找到一种方法来运行 kivy/在其上执行我的 kivy 代码。最后,我得到了 Kivy.app 版本,它创建了 [请原谅我的有限理解......] 一个应用程序,我可以将我的 python 文件拖到或通过命令行执行文件,如kivy main.py. 简单地安装 kivy via 的“通常”方式pip从未奏效(据我了解,因为提供的轮子与 M1 芯片不兼容)。

现在,我将我的 MacOS 升级到了 Monterey,这一切都崩溃了。我什至无法提供很多关于损坏的信息。当我尝试在 Kivy-Application 上拖动文件时,什么也没有发生。执行任何文件(即使是简单print("Hello")的通过命令行(如kivy main.py)都会导致

kivy
/Applications/Kivy.app/Contents/Resources/venv/bin /Applications/Kivy.app/Contents/Resources /Applications/Kivy.app/Contents/Resources
ImportError: No module named site

由于我没有使用任何特殊设置,只是最新版本中的最新更新的 MacOS 和 python(通过自制软件安装并在更新操作系统后已经重新安装)我希望任何比我更了解如何和为什么的人已经解决了这个问题为他/她自己,可以启发我。

4

2 回答 2

1

我可以使用 Rosetta 2 在带有 M1 芯片的 MacOS 上运行 kivy。

  1. 安装罗塞塔 2

    软件更新--安装-罗塞塔

  2. 用rosetta启动一个终端。右键单击 /Applications/iTerm 或 /Applicatins/Utilities/Terminal > 获取信息 > 使用 Rosetta 打开

  3. 创建一个新的 virtualenv。安装要求

    pip install kivy[base] kivy-examples

  4. 运行 main.py (python main.py)

主文件

import kivy
kivy.require('2.0.0')

from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):

    def build(self):
        return Label(text='Hello world')

if __name__ == '__main__':
    MyApp().run()
于 2021-12-11T23:00:42.263 回答
0

你有安装 Rosetta2 吗?我问是因为Kivy.app它是英特尔应用程序,没有它就无法工作。

为 Apple M1 芯片 Mac 安装 CLI Kivy 工具

您需要 Homebrew 和 XCode,请遵循以下指南:

调用后:

python setup.py build_ext --inplace

...或您的“make”命令,您可以调用sudo make install在 Python3 文件夹中构建 Kivy 并删除您之前下载的文件夹。

如果在构建过程中,由于缺少 cython 而出现错误,则需要从源安装 cython;你可以在这里做

PS,我不知道 kivy.app 是如何工作的,但是我使用 VSCode + Kivy CLI 2.1.0dev 并且当我启动 kivy 应用程序时(带有导入的 kivy 模块);它使用 kivy 启动,但是当我尝试启动print('hello')程序时,它只能从控制台启动(而不是 kivy)。

于 2021-11-13T22:41:11.240 回答