在 Spyder 中使用包和环境

在启动脚本时收到错误:“ModuleNotFoundError”

对于许多人来说,这似乎是一个常见问题,当通过“ pip install module_xxx”导入本地机器上缺少 Python 模块时,默认情况下它们不与Spyder链接。

但是今天我提出了一个快速的技巧来处理这个问题,以获得基本和快速的解决方案。(当您知道如何制作时总是很容易,对吧:) ?)

实际上,在Spyder“Tool/PYTHONPATH manager”上设置本地机器通过pip下载和存储已安装模块的路径就足够了,保存,关闭并重新启动Spyder

容易,不是吗?:) 这里有一些截图指导:

在 Spyder 中使用包和环境_第1张图片在 Spyder 中使用包和环境_第2张图片

虽然一旦您熟悉它就相对简单,但 Spyder 与其他包和环境之间的交互有时会让初次用户感到困惑。Spyder 的改进使这个过程变得更加容易(而且还有更多!),但我们想澄清这种关系是如何运作的。

我们将首先帮助您调试 Python 中处理包和环境时遇到的常见问题,即即使您确定已安装模块也无法导入。接下来,我们将指导您设置 Spyder 环境以改进您的工作流程。如果您正在寻找一种在不同环境中使用 Spyder 的方法(例如一个用于简单数据分析、一个用于机器学习、一个用于开发应用程序等),您可以直接转到最后一部分。

  • 最常见的问题:在 Spyder 中使用新安装的包
  • 将软件包安装到与 Spyder 相同的环境中
  • 使用其他环境和 Python 安装
    • 天真的方法
    • 模块化方法

最常见的问题:在 Spyder 中使用新安装的包

fooSpyder 之外安装一个包(我们称之为)后,用户在尝试将它导入到 IDE 中时可能会遇到错误:

在[ 1 ]:进口 FOO
回溯(最 近期的 通话 最后):

  文件 "",第 1行,在 < module > 
    import  foo

ModuleNotFoundError :没有 名为“foo”的模块  

发生这种情况是因为foo安装(使用condapip)在与 Spyder 当前运行的环境不同的 conda 或 venv/virtualenv 环境中。

要确认这是问题所在,您需要:

  1. 激活环境(例如 myenv在其中安装的包)foo例如具有conda activate myenv供康达,source myenv/bin/activateworkon myenv为的virtualenv / VENV,等等)。

  2. 通过运行命令在那里启动 Python 解释器python

  3. 在 Python 解释器中运行以下命令:

    导入 系统;系统。可执行文件
  4. 启动 Spyder 并在控制台中运行与步骤 3 中显示的相同的命令。

  5. 如果生成的路径相同,则 Spyder 和包在同一环境中,import foo不应产生错误(否则可能存在与您的安装无关的问题)。

  6. 如果生成的路径不同,那么您有三个选择:

    • 激活安装 Spyder 的环境并在其上安装您的软件包(请参阅下一节)。如果您尝试在另一个环境(如myenv)中安装未来的软件包,您将获得相同的ModuleNotFoundError.
    • 将 Spyder 安装到现有myenv环境或任何其他您想在其中工作的环境中,然后从那里运行它(请参阅以下部分)。这比第三个选项稍微简单一些并且具有相同的效果,但是开销更大并且灵活性较差。
    • 只将spyder-kernels包安装到myenv环境中,并在 Spyder 的首选项中设置 Python 解释器路径以指向myenvPython 可执行文件(请参阅最后一节。这需要 Spyder >=3.3.0 和一个更多的初始步骤,但需要较少的维护长期运行并避免重复安装 Spyder。

将软件包安装到与 Spyder 相同的环境中

Spyder 是一个 Python 包,就像您可能习惯的任何其他包一样,因此您可以import在其控制台编辑器中使用任何包,就像在 Spyder 环境中启动的常规 Python 或 IPython 终端一样:

  • 如果 Spyder 与 Anaconda 一起安装(我们推荐)并通过快捷方式从 Anaconda Navigator 或从 Anaconda Prompt 启动而无需修改任何内容,这将是默认的baseAnaconda 环境。
  • 如果 Spyder 是通过pip(仅限专家)安装而不是安装到virtualenv/ 中venv,则这通常是 Python 安装pip本身所属的任何东西。
  • 如果您使用系统包管理器(apt-getdnfemerge等)来安装 Spyder,这通常是您的系统 Python 及其包库。
  • 如果您将 Spyder 安装到特定环境(conda-envvenv),或者它带有预配置的环境(如 Keras 或 TensorFlow 的那些)并从那里启动它,则它只能访问来自该环境的包。

因此,如果您想在现有的 Spyder 安装中使用包(例如,将其导入脚本、包或 Spyder IPython 控制台),最简单的方法是将包安装到您所在的相同环境中。已安装 Spyder,通常采用与安装 Spyder 相同的方式(condapip、包管理器等)。但是,如果您使用pipconda-forge、Github 或自定义渠道安装软件包、同时处理多个主要项目、使用预构建的环境或有更复杂的需求,您可能希望使用一个或多个单独的环境来满足您的需求。包。如果是这样,下一节将解释如何操作。

使用其他环境和 Python 安装

如果您有一个现有的预配置环境(例如 Keras 或 TensorFlow),正在管理多个环境(例如用于开发或测试目的),或者甚至想在完全独立的 Python 安装中工作,就像 Spyder安装(例如系统安装的 Spyder 与单独的 Anaconda 安装,反之亦然),您有两个主要选择:

天真的方法

要在另一个环境中使用 Spyder,最简单的方法是将它直接安装到您希望在其中使用软件包的环境中,然后从那里运行它。这适用于所有 Spyder 版本,安装 IDE 后不需要额外配置;然而,它导致需要管理多个安装,并且不像替代方案那样灵活或可配置。因此,在处理多种环境时,我们建议 采用模块化方法。

模块化方法

从 Spyder 3.3.1开始,您可以将模块化spyder-kernels包安装到您希望工作的任何 Python 环境(conda环境、virtualenv/venv系统 Python、WinPython)中,然后将 Spyder 在其 IPython 控制台上使用的 Python 解释器更改为指向到该环境的 Python 可执行文件。

这需要少量的准备和配置,但比将 Spyder 完整安装到该环境中要“轻得多”和更快,避免了依赖冲突,并开辟了新的工作流程可能性。

为此,请执行以下步骤:

  1. 激活的环境(例如, myenv在其中你想工作()conda activate myenv用于畅达,source myenv/bin/activateworkon myenv为的virtualenv / VENV,等等

  2. spyder-kernels使用以下命令在那里安装软件包:

    • conda install spyder-kernels 如果使用 conda/Anaconda,

    • pip install spyder-kernels 如果使用 pip/virtualenv。

  3. 通过任一方法安装后,在同一环境中运行以下命令:

    python  - c  “导入系统;打印(sys.executable)”

    和复制由命令返回的路径(它应该结束pythonpythonwpython.exe或者pythonw.exe,根据您的操作系统上)。

  4. 停用该环境,激活安装了 Spyder 的环境(如果您已将其安装在其自己的环境中),然后像往常一样启动 Spyder。

  5. Spyder 启动后,导航到Preferences > Python Interpreter > Use the following interpreter步骤 3 中的路径并将其粘贴到文本框中。

  6. 启动一个新的 IPython 控制台。安装在您myenv环境中的所有软件包都应该在那里可用。如果使用 conda,则当前环境的名称及其 Python 版本应显示在 Spyder 的状态栏中,将鼠标悬停在其上应显示所选解释器的路径。

笔记:

  • 为了让变量资源管理器能够显示特定数据类型(Numpy 数组、Pandas Series/DataFrame 等)的内置编辑器,需要在 Spyder 的环境中安装相应的可选 Spyder 依赖项(Numpy、Pandas 等),不仅仅是 IPython 控制台工作环境。此外,对象资源管理器中显示的第三方包提供的自定义类目前也需要这样做,尽管未来的 Spyder 版本可能会删除后一个限制。
  • 虽然没有它 Spyder 应该可以正常工作,但确保Spyder 环境中的 Python 次要版本(3.63.73.8等)与您的工作环境中的相匹配,如果可行,将最大限度地减少出现任何问题的可能性。

你可能感兴趣的:(在 Spyder 中使用包和环境)