在Spyder中运行脚本时无法导入我自己的模块

时间:2019-06-28 22:23:10

标签: python python-3.x spyder

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

导入它们
from my_module import my_function

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

My python scripts

现在,我通过以下方式导入 WebScraper.py enter image description here

如您在上图中所看到的,出现一个错误,表明没有名为 WebScraper 的模块。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

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

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

使用默认设置-“正在执行的文件的目录”-Spyder只需在自己的文件夹中执行脚本,脚本就可以毫无问题地找到模块。

答案 1 :(得分:1)

您正在使用spyder。

您需要做的就是在spyder文件浏览器中进入您的项目,即

/User/david/Document/Python/Project/

,然后关闭ipython终端并在文件资源管理器中打开一个新文件(进入项目文件夹后)。

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

运行代码,它将起作用

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

 from . import WebScraper 
 x=WebScrapper().function

答案 2 :(得分:1)

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

例如:如果您要打开命令提示符,则提示符类似于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列表中。

答案 3 :(得分:0)

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