虚拟环境中执行--edit-notebook时Snakemake前置代码运行失败
解决Snakemake Notebook编辑时AttributeGuard找不到的问题
问题原因
你在全局site-packages安装了Notebook和Snakemake,虚拟环境里单独装了适配工作流的Snakemake版本。执行snakemake --edit-notebook时,虽然命令是在虚拟环境中运行,但Jupyter Notebook默认加载的是全局环境的Snakemake(路径显示为$HOME/.local/lib/python3.12/site-packages/snakemake/io.py),而全局版本缺少虚拟环境版本中新增的AttributeGuard类,因此触发报错。
解决方法
方法1:在虚拟环境内安装Notebook
- 激活目标虚拟环境:
source ~/.virtualenvs/<virtualenv>/bin/activate # Linux/macOS # 或 ~/.virtualenvs/<virtualenv>/Scripts/activate # Windows - 在虚拟环境中安装Notebook:
pip install notebook - 重新执行Snakemake命令:
snakemake --cores 1 --edit-notebook <output>
此时Notebook会直接使用虚拟环境内的Snakemake依赖,不会再调用全局版本。
方法2:给全局Notebook添加虚拟环境内核
如果不想重复安装Notebook,可以把虚拟环境注册为Notebook的可用内核:
- 激活虚拟环境后安装ipykernel:
pip install ipykernel - 注册虚拟环境为Notebook内核:
python -m ipykernel install --user --name=<自定义内核名称> - 打开Notebook后,在顶部菜单栏选择
Kernel > Change kernel,切换到刚注册的虚拟环境内核,再运行单元格。
验证方法
在Notebook中新增单元格,执行以下代码确认使用的是虚拟环境的Snakemake:
import snakemake print(snakemake.__file__)
输出路径应指向~/.virtualenvs/<virtualenv>/lib/python3.x/site-packages/snakemake/__init__.py,而非全局路径。
内容的提问来源于stack exchange,提问作者LittleByBlue
相关产品推荐
相关产品推荐

