python - 如何在 Apple M1 芯片上导入 Pandas
问题描述
当我打电话时:
import pandas as pd
开tensorflow_macos
(对于 M1 芯片)
我得到:
ImportError Traceback (most recent call last)
~/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/__init__.py in <module>
28 try:
---> 29 from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
30 except ImportError as e: # pragma: no cover
~/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/__init__.py in <module>
12
---> 13 from pandas._libs.interval import Interval
14 from pandas._libs.tslibs import (
ImportError: dlopen(/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so, 2): no suitable image found. Did find:
/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so: mach-o, but wrong architecture
/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so: mach-o, but wrong architecture
The above exception was the direct cause of the following exception:
ImportError Traceback (most recent call last)
<ipython-input-3-94f55571b0d6> in <module>
1 import numpy as np
----> 2 import pandas as pd
3
4 import matplotlib.pyplot as plt
5
~/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/__init__.py in <module>
31 # hack but overkill to use re
32 module = str(e).replace("cannot import name ", "")
---> 33 raise ImportError(
34 f"C extension: {module} not built. If you want to import "
35 "pandas from the source directory, you may need to run "
ImportError: C extension: dlopen(/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so, 2): no suitable image found. Did find:
/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so: mach-o, but wrong architecture
/Users/ashkan/tensorflow_macos_venv/lib/python3.8/site-packages/pandas/_libs/interval.cpython-38-darwin.so: mach-o, but wrong architecture not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --force' to build the C extensions first.
解决方案
我希望已经安装了 Xcode 命令行工具。如果没有,请安装它,然后按照步骤操作。
第 1 步:迷你锻造
从miniforge GitHub安装 miniforge for arm64 (Apple Silicon) 。Miniforge 支持安装为 Apple Silicon 本地编译的 python 包。
第二步:创建 Conda 环境
在 miniforge 安装之后和执行此步骤之前,不要忘记打开一个新会话或获取您的 .zshrc。
创建一个空的 Conda 环境,然后激活它并安装 python 3.8。以及所有需要的软件包。请注意这里不需要 numpy,因为 pandas 已经安装了它,但它会在最后一步被 Apple 提供的版本覆盖。
conda create --name mytf
conda activate mytf
conda install -y python==3.8.6
conda install -y pandas matplotlib scikit-learn jupyterlab
我已经测试过了。在这些步骤之后它将起作用。
推荐阅读
- xml - 为什么这个 XSL 模板渲染/生成 2 次?
- javascript - 根据属性的值将对象数组动态拆分为组
- unit-testing - 设置烧瓶 test_client
- sql-server - SSRS 表达式中总金额的 GL 范围
- node.js - 在 Nodejs/Express 后端验证输入并将结果发送到 React 前端
- angular - 管道内的Angular2未定义DomSanitizer
- alexa - 有什么方法可以通过api调用动态添加自定义插槽列表
- javascript - 如何使用 Typescript/JS 在数组中找到对象值的前 n 次出现?
- curl - get-pip.py 的 curl 不起作用:语法错误
- pandas - 根据具有多列同时保留所有行的数据框中的值(每行的前 20 列)进行列选择