【问题标题】:Cannot import my own module when running script in Spyder在 Spyder 中运行脚本时无法导入我自己的模块
【发布时间】:2019-11-10 19:31:13
【问题描述】:

根据the official Python documentationsthis post 将自己的模块导入脚本非常容易。基本上我只需要创建我的 .py 文件,将它们保存在一个目录中,然后我就可以使用它们来导入它们

from my_module import my_function

这正是我在项目中所做的。我写了两个脚本并将它们保存在一个目录中。我想在第三个脚本中使用它们的一些功能(同样它保存在同一目录中)。如下图。

现在我通过以下方式导入 WebScraper.py

正如您在上图中看到的那样,有一个错误表明没有名为 WebScraper 的模块。我该如何处理这个问题?

【问题讨论】:

  • 在你的程序顶部也许可以尝试:import sys sys.path.append(".")
  • @StanS。不幸的是没有工作:(
  • 请不要发布代码/数据/Tracebacks 的图像。只需复制文本,将其粘贴到您的问题中并将其格式化为代码即可。 You should not post code as an image because:

标签: python python-3.x spyder


【解决方案1】:

在 Spyder IDE 中,从您的屏幕截图中我可以看出,当前工作目录(显示在右上角)与您的脚本所在的目录(显示在编辑器面板顶部)不同。

如果您打开“工具”菜单,选择“首选项”,然后切换到“运行”选项卡,您会发现一个名为“工作目录设置”的框,您可以在其中选择“正在执行的文件的目录” " 或 "当前工作目录"。我怀疑,事实上,你选择了后者。这可以解释为什么找不到模块。

使用默认设置——“正在执行的文件的目录”——Spyder 会简单地在它自己的文件夹中执行脚本,并且脚本将没有问题找到模块。

【讨论】:

    【解决方案2】:

    你正在使用 spyder。

    您需要做的就是在 spyder 文件资源管理器中转到您的项目,即

    /User/david/Document/Python/Project/

    然后关闭 ipython 终端并在文件资源管理器中启动一个新的(在您进入项目文件夹之后)。

    为什么你的方法不起作用,因为 ipython 将 python 执行路径作为在文件资源管理器 (spyder) 中打开的当前路径

    运行代码,它会工作

    否则你需要提供相对路径并使用

     from . import WebScraper 
     x=WebScraper().function
    

    【讨论】:

      【解决方案3】:

      默认情况下,大多数应用程序都有其默认工作目录。

      例如:如果您要打开命令提示符,它的提示符类似于 Windows 中的 C:\Users\<username>,MAC 中的 /Users/<username>

      当然,Spyder 也会有自己的工作目录。每当您执行任何脚本时,Spyder 都会尝试首先查看该脚本。

      我的建议是以编程方式检查工作目录并导航到正确的位置(如果我们在错误的位置)。看看下面的代码。

      import os
      os.getcwd() # Check current directory's path
      os.chdir('/Users/david/Documents/Python/Project') # Navigate
      

      在此尝试导入后,它将起作用。

      如果您愿意,可以将此路径附加到sys.path 列表中。

      【讨论】:

        【解决方案4】:

        对于 Spyder 5.1.5 和 Python 3.7.9 上的我来说 我不得不重启 IPython 内核!

        症状是这样的。

        • 我在同一个目录中有两个模块 m1 和 m2
        • 模块 m1 导入 m2
        • Strat Spyder 并运行 m1,一切正常
        • 添加模块 m3 并从 m1 导入
        • 运行 m1,Spyder 报错并报错 ModuleNotFound
        • 重启Ipython内核,一切正常,没有错误

        【讨论】:

          【解决方案5】:

          类似的事情发生在我身上。 我可以从终端导入,运行 python。 在 spyder 上,使用相同的 python 版本,我无法导入相同的包。 在尝试了不同的事情后,重新安装 Spyder 解决了这个问题。

          【讨论】:

            【解决方案6】:

            将 python 文件保存在同一文件夹中,只需使用以下命令将目录更改为当前 python 文件位置 导入操作系统 os.chdir("模块文件夹")

            它会起作用的。它对我有用。:)

            【讨论】:

              猜你喜欢
              • 2018-09-25
              • 1970-01-01
              • 2018-12-06
              • 2021-12-29
              • 2012-03-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-04-26
              相关资源
              最近更新 更多