Conda环境中命令行Python与Jupyter Notebook的Torch版本不一致求助
问题背景
我在自己的Conda环境GNN里碰到了一个头疼的问题:命令行里运行Python导入的PyTorch和Jupyter Notebook里的完全不是同一个版本,路径也不一样。
命令行测试结果
$ source activate GNN (GNN) $ python >>> import torch >>> print(torch.__file__) /home/riccardo/.local/lib/python3.7/site-packages/torch/__init__.py >>> print(torch.__version__) 0.4.1
Jupyter Notebook测试结果
先启动Notebook:
(GNN) $ jupyter notebook --no-browser --port=8890
在Notebook中执行代码后得到的结果:
import torch print(torch.__file__) # 输出:/home/riccardo/.local/lib/python3.6/site-packages/torch/__init__.py print(torch.__version__) # 输出:1.2.0+cu92
我已经尝试过安装ipykernel并注册内核:
$ conda install ipykernel $ source activate GNN (GNN) $ python -m ipykernel install --user --name GNN --display-name "Python (GNN)"
内核确实安装到了/home/riccardo/.local/share/jupyter/kernels/gnn,但问题还是没解决。
解决方案
你遇到的核心问题是Jupyter并没有真正使用GNN环境的Python解释器,而是在调用系统或者其他旧环境的版本。可以按下面的步骤一步步排查修复:
检查内核配置文件
打开/home/riccardo/.local/share/jupyter/kernels/gnn/kernel.json这个文件,重点看argv里的Python路径是不是指向你的GNN环境。正确的路径应该类似/home/riccardo/anaconda3/envs/GNN/bin/python(根据你自己的Conda安装路径调整)。如果路径不对,直接修改这个文件:{ "argv": [ "/home/riccardo/anaconda3/envs/GNN/bin/python", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "Python (GNN)", "language": "python" }确保在激活环境后安装并启动Jupyter
很多人会忽略这一点:如果你的GNN环境里没装Jupyter,启动的时候会调用系统全局的Jupyter,自然会跑错环境。严格按这个顺序操作:source activate GNN # 先给当前环境安装Jupyter conda install jupyter # 再启动Notebook jupyter notebook --no-browser --port=8890打开Notebook后,记得在右上角选择
Python (GNN)这个内核,再测试导入torch。重置内核注册(可选)
如果之前的内核注册有残留问题,可以先删除再重新注册:# 删除已注册的GNN内核 jupyter kernelspec remove GNN # 重新激活环境并注册 source activate GNN python -m ipykernel install --user --name GNN --display-name "Python (GNN)"检查PYTHONPATH环境变量(进阶)
有时候系统的PYTHONPATH会强制让Python优先加载旧路径下的包。激活GNN环境后,先执行:echo $PYTHONPATH如果输出里包含
/home/riccardo/.local/lib/python3.6/site-packages这类不属于GNN环境的路径,可以临时清空它再启动Notebook:unset PYTHONPATH jupyter notebook --no-browser --port=8890
内容的提问来源于stack exchange,提问作者den3b




