如何使用M1芯片在Mac上运行Kivy



MacOS:Monterey 12.0.1,当前(16-11-21(最新版本

IDE:Visual Studio代码

我想用Kivy为一个大学项目创建一些简单的桌面应用程序界面。我遵循了kivy.org上的说明:

  • pip安装venv工具
  • 创建并激活venv
  • 使用brew安装附加的依赖项
  • CCD_ 1
  • 运行默认的"Hello world!"文件:
from kivy.uix.button import Button
class TestApp(App):
def build(self):
return Button(text='Hello World')
TestApp().run()

这是它给我的输出:

(kivy_venv) jdhamelink@Josefs-MacBook-Air UNO_X % /Users/jdhamelink/Local/UNO_X/kivy_venv/bin/python /Users/jdhamelink/Local/UNO_X/main.py
[INFO   ] [Logger      ] Record log in /Users/jdhamelink/.kivy/logs/kivy_21-11-16_6.txt
[INFO   ] [Kivy        ] v2.0.0
[INFO   ] [Kivy        ] Installed at "/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.8.9 (default, Aug  3 2021, 19:21:54) 
[Clang 13.0.0 (clang-1300.0.29.3)]
[INFO   ] [Python      ] Interpreter at "/Users/jdhamelink/Local/UNO_X/kivy_venv/bin/python"
[ERROR  ] [Clock       ] Unable to import kivy._clock. Have you perhaps forgotten to compile kivy? Kivy contains Cython code which needs to be compiled. A missing kivy._clock often indicates the Cython code has not been compiled. Please follow the installation instructions and make sure to compile Kivy
Traceback (most recent call last):
File "/Users/jdhamelink/Local/UNO_X/main.py", line 1, in <module>
from kivy.app import App
File "/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/app.py", line 411, in <module>
from kivy.base import runTouchApp, async_runTouchApp, stopTouchApp
File "/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/base.py", line 28, in <module>
from kivy.clock import Clock
File "/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/clock.py", line 466, in <module>
from kivy._clock import CyClockBase, ClockEvent, FreeClockEvent, 
ImportError: dlopen(/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/_clock.cpython-38-darwin.so, 0x0002): tried: '/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/_clock.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/_clock.cpython-38-darwin.so' (no such file), '/usr/lib/_clock.cpython-38-darwin.so' (no such file)

我认为这可能与体系结构有关,因为最后一行的Importerror,特别是:

tried: '/Users/jdhamelink/Local/UNO_X/kivy_venv/lib/python3.8/site-packages/kivy/_clock.cpython-38-darwin.so' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/local/lib/_clock.cpython-38-darwin.so' (no such file), '/usr/lib/_clock.cpython-38-darwin.so' (no such file)

在网上,我找不到这个问题的明确解决方案,但我怀疑这可能与";新的";M1芯片,其架构可能会引起一些问题。很可能是我在安装过程中忘记了一些非常明显的步骤,因为我也得到了一个提示,我可能忘记了编译Cython代码,这是我以前从未听说过的。有人能帮我吗?

---编辑---

我已经在虚拟环境上安装了kivy;全球";使用pip3

尝试在终端中使用此命令,它对我有效。

pip3 install git+https://github.com/kivy/kivy.git

最新更新