苹果 M1 芯片上的 Python 3 flask cairo 包错误的架构

问题描述

我正在尝试在我的新 MacBook Pro M1 上运行一个项目

python“Flask”项目使用依赖于cairo

md2pdf

我在实现 cairographics 包时出错

我使用 sudo port install cairo 安装

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/bin/intent_gatherer",line 11,in <module>
    load_entry_point('intent-gatherer','console_scripts','intent_gatherer')()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pkg_resources/__init__.py",line 490,in load_entry_point
    return get_distribution(dist).load_entry_point(group,name)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pkg_resources/__init__.py",line 2862,in load_entry_point
    return ep.load()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pkg_resources/__init__.py",line 2462,in load
    return self.resolve()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pkg_resources/__init__.py",line 2468,in resolve
    module = __import__(self.module_name,fromlist=['__name__'],level=0)
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/manage.py",line 4,in <module>
    from intent_gatherer.app import create_app
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/app.py",line 8,in <module>
    from intent_gatherer import auth,api
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/api/__init__.py",line 1,in <module>
    from . import views
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/api/views.py",in <module>
    from intent_gatherer.api.resources import (
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/api/resources/__init__.py",line 99,in <module>
    from .card import (
  File "/Users/robenalam/Documents/deeplink/chatbotstrap/gatherer_backend/intent_gatherer/api/resources/card.py",line 20,in <module>
    from md2pdf.core import md2pdf
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/md2pdf/__init__.py",in <module>
    from md2pdf.core import md2pdf  # noqa
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/md2pdf/core.py",line 5,in <module>
    from weasyprint import HTML,CSS
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/weasyprint/__init__.py",line 469,in <module>
    from .css import preprocess_stylesheet  # noqa isort:skip
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/weasyprint/css/__init__.py",line 27,in <module>
    from . import computed_values,counters,media_queries
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/weasyprint/css/computed_values.py",line 15,in <module>
    from .. import text
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/weasyprint/text.py",in <module>
    import cairocffi as cairo
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cairocffi/__init__.py",line 48,in <module>
    cairo = dlopen(
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/cairocffi/__init__.py",line 45,in dlopen
    raise OSError(error_message)  # pragma: no cover
OSError: no library called "libcairo-2" was found
cannot load library '/opt/local/lib/libcairo.dylib': dlopen(/opt/local/lib/libcairo.dylib,2): no suitable image found.  Did find:
    /opt/local/lib/libcairo.dylib: mach-o,but wrong architecture
    /opt/local/lib/libcairo.2.dylib: mach-o,but wrong architecture
cannot load library 'libcairo.so.2': dlopen(libcairo.so.2,2): image not found
cannot load library 'libcairo.2.dylib': dlopen(libcairo.2.dylib,2): image not found
cannot load library 'libcairo-2.dll': dlopen(libcairo-2.dll,2): image not found

我尝试使用 brew 安装 cairo,但由于某种原因,python 未检测到该软件包。

解决方法

转到应用程序文件夹 -> 右键单击​​终端应用程序 -> 获取信息

勾选使用 Rosetta 打开选项。

立即尝试。