【问题标题】:ModulNotFoundError even though !pip freeze tells you it is downloaded on ubuntu through WSLModulNotFoundError 即使 !pip freeze 告诉您它是通过 WSL 在 ubuntu 上下载的
【发布时间】:2021-01-27 09:12:03
【问题描述】:

我正在通过 Windows Subsystems for Linux(WSL) 使用 Ubuntu18.04

在 ubuntu 上,我运行 jupyter lab 并尝试导入库,但是即使 !pip freeze 命令声明所有库都已安装输出 ModulNotFoundError

当我运行main.py 时,python 脚本上的一切都可以正常工作,它会毫无问题地导入所有依赖项。

当我使用 WSL 在 ubuntu 上运行 jupyter lab 时,它似乎没有带来依赖关系,我该如何解决?奇怪的是 !pip freeze inside jupyter lab 告诉我我已经安装了所有依赖项。

提前致谢!

编辑: 当我在 jupyter lab 上安装软件包时,它会显示 Requirements already satisfied 。此外,这只发生在我在虚拟环境上启动 jupyter lab 时。当我在全球环境中运行时,它似乎工作正常。

EDIT2:它似乎与 jupyter notebook 一起工作....虽然不太清楚为什么,如果有人知道这件事,我很想知道原因。

【问题讨论】:

    标签: python windows-subsystem-for-linux jupyter-lab


    【解决方案1】:

    我怀疑pip 可执行文件可能指向与您当前在笔记本中使用的不同版本的python。

    您可以尝试使用 %pip 魔术函数运行 pip,而不是运行内联 shell 命令 !pip,即

    %pip freeze
    

    %pip install your-missing-package
    

    说明

    %pip 是一个使用当前可执行文件 (sys.executable) 的 line-magic 函数。

    相比之下,!anycommand ... 运行的是 shell 命令:

    sh anycommand ...
    

    使用老式的sh shell 解释器(不是您可能期望的bash)。因此,您正在运行的系统可执行文件pip(通过!pip ...)可能使用与sys.executable 不同的python 版本。


    另类

    或者,如果这不起作用,您可以在 shell 命令中使用sys.executable(在笔记本单元格中):

    import sys
    
    !{sys.executable} -m pip freeze
    

    同样,要安装软件包,您可能需要运行:

    !{sys.executable} -m pip install your-missing-package
    

    【讨论】:

    • 谢谢克里斯。我会尝试你的方法,并在我修复我的 jupyter 实验室后通知你......由于某种原因,它目前无法正常工作。
    猜你喜欢
    • 2019-09-23
    • 2021-02-24
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 2016-03-29
    • 2021-05-15
    • 2011-04-02
    • 2015-02-26
    相关资源
    最近更新 更多