在虚拟环境中的jupyter笔记本中访问python Flask时发生ModuleNotFoundError

时间:2020-04-11 19:27:35

标签: python-3.x flask jupyter-notebook virtualenv

我在运行nividia nano的ubuntu上创建了一个虚拟环境gcloudenv。我能够成功安装flask和所需的库,并能够从该虚拟环境将我的appengine部署到GCP中。我所有的工作都在python中进行,并且我使用了nano作为编辑器来启动并运行我的代码。到目前为止没有问题。

我的虚拟环境gcloudenv已经具有flask,jinga等所有必需的软件包,运行pip冻结时可以看到它们。

然后,我尝试在Jupyter笔记本上工作,因为我的代码变得有点复杂,并且我不想编写完整的代码然后运行。

在创建虚拟环境之前,我已经安装了jupyter笔记本。我也在虚拟环境中也安装了jupyter。 因此,我按照说明通过运行以下命令来创建新内核:-

  (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ pip install ipykernel
  (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ ipython kernel install --user -- 
  name=gcloudenv

现在,我将笔记本运行为:

      (gcloudenv) sunny@my-nano:~gcloudenv/MyApp/mainfolder$ 
       /home/gcloudenv/bin/jupyter notebook

尝试导入烧瓶时,出现以下错误: ModuleNotFoundError:没有名为“烧瓶”的模块

请注意在我空白时发生了什么。

2 个答案:

答案 0 :(得分:0)

添加

!pip install flask

在Jupyter笔记本的开头。

答案 1 :(得分:0)

最后,我设法解决了我的问题。感谢精彩的帖子https://jakevdp.github.io/blog/2017/12/05/installing-python-packages-from-jupyter/

本质上,我有两个问题: 1.我的虚拟环境中没有Jupyter笔记本。本来我以为我已经安装了它,但这是不正确的。因此,每当我尝试启动一个笔记本时,它都会选择在路径中找到的第一个Jupyter笔记本。 找出它指向哪个命令的好方法是运行哪个命令

   (gcloudenv) sunny@my-nano:~/gcloudenv$ which jupyter-notebook

对我来说,那是:

    /home/sunny/archiconda3/bin/jupyter-notebook

实际上,我的系统上有3份jupyter-notebook。一个可能是使用sudo pip安装的,因此进入了根文件夹。可能不是一件好事。

因此,我使用以下命令安装了新的jupyter-notebook:-

   (gcloudenv) $ pip install jupyter notebook 

2。下一步是通过从jupyter笔记本(或从命令行)运行以下命令来检查可用的Jupyter内核列表:

            !jupyter kernelspec list (OR (gcloudenv) $jupyter kernelspec list

我的jupyter笔记本无法导入flask库,因为它指向我的virtualenv gcloudenv之外的错误内核配置。

        Available kernels:
        gcloudenv    /home/sunny/.local/share/jupyter/kernels/gcloudenv ( correct one)
        python3      /home/sunny/gcloudenv/share/jupyter/kernels/python3

您可以通过在文件上执行“更多”来确定它选择的是哪个python版本:-

           (gcloudenv) $ 
           /more/home/sunny/.local/share/jupyter/kernels/gcloudenv/kernel.json 

一旦我将内核从笔记本中更改为指向python3,它就会选择正确的路径以及我需要的所有相关库。

总结,当您遇到上述问题时,请执行以下操作:-

  • 检查python的路径(whereis python或哪个python)
  • 检查是否正在运行“正确的”笔记本。这取决于路径以及是否已获取virtualenv。
  • 从virtualenv中使用pip安装jupyter笔记本(请勿使用sudo)
  • 检查Jupyter内核。如果您有一个普通的jupyter笔记本并且要使用多个virtualenv,则这可能特别相关。