如何使用virtualenv运行他人的Jupyter Notebook并管理依赖?
解决方案
以下几种方法可以让你的Jupyter Notebook包含虚拟环境创建和依赖安装的完整流程,方便分享给他人:
方法1:直接调用虚拟环境的可执行文件完成配置
在Notebook的第一个单元格中运行以下Bash命令,不需要source激活环境,直接调用虚拟环境内的pip和python来完成依赖安装和内核注册:
# 创建虚拟环境 python3 -m venv project_env # 安装项目依赖和ipykernel(用于注册Jupyter内核) ./project_env/bin/pip install xxx zzz ipykernel # 将虚拟环境注册为Jupyter可用内核 ./project_env/bin/python -m ipykernel install --user --name=project_env
运行完这个单元格后,点击Jupyter界面顶部的「内核」→「更改内核」,选择名为project_env的内核。之后所有代码单元格都会使用这个独立虚拟环境的Python解释器,导入xxx和zzz模块就不会有问题。
方法2:结合requirements.txt管理依赖
如果需要更清晰地指定依赖版本,先在Notebook中添加一个单元格,写入依赖清单(或者从现有环境导出):
# requirements.txt 内容示例 xxx==1.2.3 zzz==4.5.6 ipykernel==6.25.0
然后在下方单元格运行命令创建环境并安装依赖:
python3 -m venv project_env ./project_env/bin/pip install -r requirements.txt ./project_env/bin/python -m ipykernel install --user --name=project_env
同样完成内核切换即可使用。
清理说明(可选)
如果需要移除注册的内核,可运行以下命令:
jupyter kernelspec remove project_env -y # 也可以删除虚拟环境文件夹 rm -rf project_env
关键说明
之前的方法失效是因为每个!开头的Bash命令都在独立的子进程中运行,source激活环境的操作只对当前子进程有效,进程退出后环境变量就会失效。直接调用虚拟环境内的pip和python可绕过这个问题,同时注册内核能让后续单元格直接使用该环境。
内容的提问来源于stack exchange,提问作者tospo
相关产品推荐
相关产品推荐

