已安装TensorFlow却无法安装CLU包的问题求助(Apple M1 Max环境)
M1 Mac下安装CLU时提示找不到TensorFlow的解决办法
问题背景
环境:
- Apple M1 Max
- Conda 环境(Miniforge3)+ Python 3.9
已安装适配M1的TensorFlow相关包:
tensorboard 2.10.1 pypi_0 pypi tensorboard-data-server 0.6.1 pypi_0 pypi tensorboard-plugin-wit 1.8.1 pypi_0 pypi tensorflow-deps 2.10.0 0 apple tensorflow-estimator 2.10.0 pypi_0 pypi tensorflow-macos 2.10.0 pypi_0 pypi tensorflow-metal 0.6.0 pypi_0 pypi
验证TensorFlow可正常导入:
$ python >>> import tensorflow as tf >>> print(tf.__version__) 2.10.0
尝试安装CLU 0.0.7时,执行命令:
$ pip install clu==0.0.7
出现错误:
Collecting etils[epath] Using cached etils-0.8.0-py3-none-any.whl (127 kB) Collecting jaxlib Using cached jaxlib-0.3.22-cp39-cp39-macosx_11_0_arm64.whl (54.5 MB) ERROR: Could not find a version that satisfies the requirement tensorflow (from clu) (from versions: none) ERROR: No matching distribution found for tensorflow
问题原因
CLU的依赖声明中要求的是标准tensorflow包,但M1 Mac官方提供的适配包是tensorflow-macos(而非通用的tensorflow),pip的依赖解析系统不会将这两个包视为等价,因此判定环境中缺少tensorflow依赖。
解决办法
方法一:跳过依赖检查安装CLU
因为实际环境中已经有兼容的tensorflow-macos(导入名与标准tensorflow完全一致),只需跳过CLU的依赖检查即可完成安装:
pip install --no-deps clu==0.0.7
安装完成后,手动安装CLU的其他依赖(除tensorflow外),直接执行:
pip install etils[epath] jaxlib
方法二:创建虚拟包映射(进阶)
如果需要让pip正式识别tensorflow依赖,可在conda环境中创建虚拟的tensorflow包映射:
- 找到当前conda环境的
site-packages目录(可通过python -c "import site; print(site.getsitepackages()[0])"查看) - 复制目录中的
tensorflow_macos.dist-info文件夹,并重命名为tensorflow.dist-info - 修改
tensorflow.dist-info/METADATA文件,将包名改为tensorflow
这种方法能让pip的依赖解析系统认为tensorflow已安装,但操作相对繁琐,仅推荐有特殊需求的场景使用。
内容的提问来源于stack exchange,提问作者lausena
相关产品推荐
相关产品推荐

