You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Conda环境中命令行Python与Jupyter Notebook的Torch版本不一致求助

PyTorch版本不一致:Conda环境下命令行Python vs Jupyter Notebook

问题背景

我在自己的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

火山引擎 最新活动