无法在jupyter笔记本中导入模块; 错误的sys.path

run*_*kid 12 python ipython-notebook jupyter-notebook

我在iPython/Jupyter笔记本中导入模块时遇到问题.问题基本上在于sys.path所指向的位置.

从iPython/Jupyter笔记本中,sys.executable返回:

'/usr/bin/python'
Run Code Online (Sandbox Code Playgroud)

但是,从命令行返回:

'//anaconda/bin/python'
Run Code Online (Sandbox Code Playgroud)

我尝试过卸载并重新安装anacondas,但问题仍然存在.

我也尝试在我的bash_profile中添加$ PYTHONPATH以包含// anaconda/bin/python,但这并没有解决它.

无论如何都要永久地更改我的jupyter笔记本中的sys.path,而不是简单地使用sys.path.append(...)?

Mik*_*ler 9

  1. 打开一个新的终端窗口,看看这是否有帮助。如果没有,请继续执行 2。

  2. 从终端启动标准 Python 会话并键入:

    >>> import sys
    >>> sys.executable
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在笔记本中做同样的事情:

    In [1]: import sys
            sys.executable
    
    Run Code Online (Sandbox Code Playgroud)
  4. 比较结果。希望这能给你一个线索。

  • 从终端,我得到: '/Users/---/anaconda/bin/python' 从笔记本,我得到: '/usr/bin/python' 你能给我一些关于这意味着什么以及我的建议吗?现在应该做什么? (2认同)

rra*_*d88 9

我遇到过同样的问题。在经历了在其他地方发现的这个问题的许多(比如太多)解决方案之后,我设法找到了一个至少适用于我的情况的解决方案。

Step1:检查anaconda环境的正确可执行路径。

进入命令行,激活有问题的 conda 环境,并检查该环境的正确可执行路径。

conda activate {envronment name};
然后在 python 控制台上,(>>>)import sys;sys.executable

例如在 Linux 上它将是 /media/{username}/{path-to}/anaconda3/envs/{environment name}/bin/python

Step2:修正jupyter会话的可执行路径。

从命令行,检查kernel.json有问题的 conda 环境所在的路径。

jupyter kernelspec list

例如在 Linux 上,它将是: /home/{username}/.local/share/jupyter/kernels/{environment name}

打开kernel.json位于该文件夹中的,替换不正确的可执行路径,如下图。

{
 "argv": [
  "REPLACE-THIS-WITH-THE-CORRECT-EXECUTABLE-PATH",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "heterodimers",
 "language": "python"
}

Run Code Online (Sandbox Code Playgroud)

希望这也适用于您的情况。