Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Spyder中运行脚本时无法导入我自己的模块_Python_Python 3.x_Spyder - Fatal编程技术网

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

Python 在Spyder中运行脚本时无法导入我自己的模块,python,python-3.x,spyder,Python,Python 3.x,Spyder,根据或,将自己的模块导入脚本非常容易。基本上,我只需要创建我的.py文件,将它们保存在一个目录中,然后使用 from my_module import my_function 这正是我在项目中所做的。我编写了两个脚本并将它们保存在一个目录中。我想在第三个脚本中使用其中的一些函数(同样,它保存在同一个目录中)。如下图所示 现在我以以下方式导入WebScraper.py 正如您在上面的图片中看到的,有一个错误表明没有名为WebScraper的模块。我如何处理这个问题?您正在使用spyder 您

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

from my_module import my_function
这正是我在项目中所做的。我编写了两个脚本并将它们保存在一个目录中。我想在第三个脚本中使用其中的一些函数(同样,它保存在同一个目录中)。如下图所示

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

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

您正在使用spyder

您只需在spyder文件资源管理器中转到您的项目ie即可

/User/david/Document/Python/Project/

然后关闭ipython终端并在文件资源管理器中启动一个新的on(在转到项目文件夹后)

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

运行代码,它就会工作

其他方面,您需要提供相对路径和使用

 from . import WebScraper 
 x=WebScraper().function

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

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


默认设置为“正在执行的文件的目录”,Spyder只需在自己的文件夹中执行脚本,脚本在查找模块时不会出现问题。

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

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

因此,Spyder肯定也会有自己的工作目录。无论何时执行任何脚本,Spyder都会首先尝试查看该脚本

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

import os
os.getcwd() # Check current directory's path
os.chdir('/Users/david/Documents/Python/Project') # Navigate
在尝试导入之后,它将起作用


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

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

在程序顶部,可以尝试:import sys.path.append(“.”@StanS。不幸的是,没有成功:(请不要发布代码/数据/回溯的图像。只需复制文本,粘贴到问题中,并将其格式化为代码。