Jupyter环境导入SCVI包报错:jax模块未初始化完全无version属性
M1 Mac下SCVI导入报错(jax循环导入)修复方案
环境背景
- 设备:M1芯片Mac,系统版本13.0.1
- Python版本:3.9.15,运行环境为Jupyter
- 已执行操作:通过以下命令完成SCVI及scvi-tools安装
!pip3 install SCVI !pip install "scvi-tools[tutorials]" - 报错信息:执行
import scvi时触发AttributeError: partially initialized module 'jax' has no attribute 'version' (most likely due to a circular import)
排查与修复步骤
1. 修复jax依赖损坏/版本不兼容问题
jax循环导入错误多由安装损坏或版本冲突导致,执行以下命令重装依赖:
# 卸载现有冲突包 pip uninstall -y jax jaxlib scvi-tools scvi # 安装适配M1的jax CPU版本(优先解决基础运行问题) pip install "jax[cpu]" --upgrade # 重新安装scvi-tools完整包 pip install "scvi-tools[tutorials]"
2. 使用mambaforge创建纯净隔离环境(推荐)
全局环境依赖混乱是常见诱因,用mamba创建专属环境可彻底规避:
# 创建新环境,指定Python3.9版本 mamba create -n scvi_env python=3.9 -y # 激活环境 conda activate scvi_env # 安装scanpy(bioconda源适配M1) mamba install scanpy -c bioconda -y # 安装scvi-tools教程版 pip install "scvi-tools[tutorials]"
3. 启用M1 GPU加速(可选)
若需利用M1芯片GPU,安装支持Metal的jaxlib版本:
pip uninstall jaxlib -y # 安装适配arm64的metal版jaxlib pip install jaxlib==0.4.16 -f https://storage.googleapis.com/jax-releases/jaxlib_releases.html
验证GPU是否识别:
import jax print(jax.devices())
输出包含MetalDevice即表示GPU配置生效。
4. 关联Jupyter内核到新环境
若在Jupyter中使用隔离环境,需添加对应内核:
conda activate scvi_env pip install ipykernel -y python -m ipykernel install --user --name=scvi_env
之后在Jupyter界面切换至scvi_env内核运行代码即可。
内容的提问来源于stack exchange,提问作者Samuel S
相关产品推荐
相关产品推荐

