【问题标题】:ModuleNotFoundError when accessing python Flask within jupyter notebook in a virtual env在虚拟环境中的 jupyter notebook 中访问 python Flask 时出现 ModuleNotFoundError
【发布时间】:2020-04-11 19:27:35
【问题描述】:

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

我的虚拟环境 gcloudenv 已经拥有烧瓶、jinga 等所需的所有包,当我运行 pip freeze 时我可以看到它们。

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

在创建虚拟环境之前,我已经安装了 jupyter notebook。我还在虚拟环境中安装了 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: 没有名为“flask”的模块

请注意当我昏迷时确定发生了什么。

【问题讨论】:

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


    【解决方案1】:

    添加

    !pip install flask
    

    在 Jupyter 笔记本的开头。

    【讨论】:

    • 感谢您的回复。但根据我的知识,这不是一个好习惯。这完全是关于 jupyter 内核指向的位置。我已经解决了我的问题。请参阅下面的回复。
    【解决方案2】:

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

    本质上,我有两个问题:- 1. 我的虚拟环境中没有 jupyter-notebook。最初我以为我已经安装了它,但这是不正确的。因此,每当我尝试启动一个时,它都会选择它可以在路径中找到的第一个 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 notebook(或命令行)运行以下命令来检查可用的 Jupyter 内核列表:

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

    我的 jupyter notebook 无法导入烧瓶库,因为它指向了我的 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 or which python)
    • 检查您是否正在运行“正确”的笔记本。这取决于路径以及您是否已获取 virtualenv。
    • 在您的 virtualenv 中使用 pip 安装 jupyter notebook(不要使用 sudo)
    • 检查 Jupyter 内核。如果您有一个通用的 jupyter notebook 并且想要使用多个 virtualenv,这可能特别重要。

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2020-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多