根据the official Python documentations或this post,将自己的模块导入脚本非常简单。基本上,我只需要创建.py文件,将它们保存在一个目录中,然后我就可以使用
导入它们from my_module import my_function
这正是我在项目中所做的。我编写了两个脚本,并将它们保存在一个目录中。我想在第三个脚本中使用它们的某些功能(再次将其保存在同一目录中)。如下图所示。
如您在上图中所看到的,出现一个错误,表明没有名为 WebScraper 的模块。我该如何解决这个问题?
答案 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 解决了问题。