根据官方Python文档或这篇文章将自己的模块导入到脚本中非常容易。基本上我只需要创建我的 .py 文件,将它们保存在一个目录中,然后我就可以使用
导入它们from my_module import my_function
这正是我在我的项目中所做的。我编写了两个脚本并将它们保存在一个目录中。我想在第三个脚本中使用它们的一些函数(同样它保存在同一目录中)。如下图所示。
正如您在上图中看到的,有一个错误,表明没有名为 WebScraper 的模块。我该如何解决这个问题?
在 Spyder IDE 中,我从你的屏幕截图中可以看出,当前工作目录(显示在右上角)与脚本所在的目录(显示在编辑器面板顶部)不同。
如果打开“工具”菜单,选择“首选项”,然后切换到“运行”选项卡,您会发现一个名为“工作目录设置”的框,您可以在其中选择“正在执行的文件的目录”或“当前工作目录”。我怀疑,事实上,你选择了后者。这可以解释为什么找不到模块。
使用默认设置 - “正在执行的文件的目录” - Spyder 将简单地在其自己的文件夹中执行脚本,并且脚本找到模块不会有任何问题。
您正在使用 Spyder。
您需要做的就是在 Spyder 的文件资源管理器中转到您的项目,即
/User/david/Document/Python/Project/
然后关闭 IPython 终端并在文件资源管理器中启动一个新终端(进入项目文件夹后)。
您的方法不起作用,因为 IPython 将 python 执行路径作为文件资源管理器(Spyder)中打开的当前路径。
运行代码;它会起作用的。
否则,您需要提供相对路径并使用:
from . import WebScraper
x=WebScraper().function
默认情况下,大多数应用程序都有其默认工作目录。
例如:如果您要打开命令提示符,它的提示符类似于 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
列表中。
对于我来说 Spyder 5.1.5 和 Python 3.7.9 我必须重新启动 IPython 内核!
症状是这样的。
类似的事情也发生在我身上。 我可以从终端导入,运行 python。 在spyder上,使用相同的python版本,我无法导入相同的包。 尝试不同的方法后,重新安装 Spyder 解决了问题。
将 python 文件保留在同一文件夹中,只需使用以下命令将目录更改为当前 python 文件位置 导入操作系统 os.chdir("模块文件夹")
它会起作用的。它对我有用。:)