如何 运行 Jupyter Notebook 与不同版本的 Python?

How to run Jupyter Notebook with a different version of Python?

我希望能够 运行 Python 3.8(当前版本)和 Python 3.7 在我的 Jupyter Notebook 中。我了解从虚拟环境创建不同的 IPython 内核是一种方式。 所以我下载了 Python 3.7 并将其本地安装在我的主目录中。

使用此 python 二进制文件创建虚拟环境
> virtualenv -p ~/Python3.7/bin/python3 py37
> source py37/bin/activate

这非常有效,并且在检查 python --versionsys.version 时正确地给出了 'Python 3.7'。 然后创建 IPython 内核,

(py37) > ipython kernel install --user --name py37 --display-name "Python 3.7"
(py37) > jupyter notebook

这也运行s没有报错,可以确认内核添加到Notebook中了。但是它不像虚拟环境那样 运行 Python 3.7,而是像默认内核那样的 Python 3.8。 (用 sys.version 确认)

我查看了 ~/.local/share/jupyter/kernels/py37/kernel.json 并看到其内容为

{
 "argv": [
  "/usr/bin/python3",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3.7",
 "language": "python"

所以我自然而然地尝试编辑 /usr/bin/python3 以指向我的 Python 3.7 二进制文件路径 ~/Python3.7/bin/python3,但即使是内核也不能在笔记本中正常工作.

我能做什么?

注意:我使用Arch Linux,所以我安装了jupytervirtualenv, ... 通过 pacman 而不是 Arch 中推荐的 pip

我自己找到的,很艰难。不管怎样,让我分享一下,以防对任何人有帮助。

我猜,问题是,通过 pacman 安装的 jupyter notebook 在 PATH 变量中搜索 python 二进制文件,而不是在虚拟指定的路径中环境。由于我在本地主目录中安装了 Python 3.7,因此 Jupyter 无法找到它,它可能默认为默认的 python 版本。

所以可能的解决方案是:

  1. 在 Python 3.7 [=25] 上设置的虚拟环境中,通过 pip(而不是 pacman)安装 Jupyter Notebook =](完全不推荐给 Arch Linux 用户,因为通过 pip 安装软件包可能会在未来引起问题)
 > wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz  
 > tar -xvf Python-3.7.4.tgz    
 > cd Python-3.5.1/     
 > ./configure --prefix=$HOME/Python37     
 > make     
 > make install   

 > virtualenv -p ~/Python3.7/bin/python3 py37   
 > source py37/bin/activate 

 (py37) > pip install notebook   
 (py37) > python -m notebook
  1. 在默认目录中安装 Python 3.7(而不是指定其他位置)。使用合适的虚拟环境创建一个新的 IPython 内核,并使用通过 pacman 安装的 jupyter-notebook(推荐给 Arch Linux 用户)
    注1:> python指向更新的全局Python3.8版本,> python3> python3.7指向新安装的Python3.7
    注意 2:一旦创建了所需的内核,您甚至可以在虚拟环境之外使用该 python 版本。
 > wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz  
 > tar -xvf Python-3.7.4.tgz    
 > cd Python-3.5.1/     
 > ./configure   
 > make     
 > sudo make install   

 > virtualenv -p $(which python3.7) py37   
 > source py37/bin/activate 

 (py37) > ipython kernel install --user --name py37 --display-name "Python 3.7"
 (py37) > jupyter notebook
  1. 将本地安装新Python版本的目录路径添加到$PATH变量,创建一个IPython内核和运行 Jupyter Notebook 在合适的虚拟环境中。 (还没有亲自尝试过这个。只是觉得这应该有效。所以不能保证。而且我认为这不是一个好的解决方案)
 > wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz  
 > tar -xvf Python-3.7.4.tgz    
 > cd Python-3.5.1/     
 > ./configure --prefix=$HOME/Python37 
 > make     
 > make install   
 > export PATH="$HOME/Python37/bin:$PATH"          

 > virtualenv -p  py37   
 > source py37/bin/activate 

 (py37) > ipython kernel install --user --name py37 --display-name "Python 3.7"
 (py37) > jupyter notebook

另一种方法是 运行 笔记本应用程序直接使用您需要的 Python 版本 - 前提是它是为 Python 版本安装的(例如在 Mac 使用 brew 安装版本 Python3.8):

/usr/local/opt/python@3.8/bin/python3 -m notebook

此外,如果您想安装该版本的软件包:

/usr/local/opt/python@3.8/bin/pip3 install that_package