[英]Cannot Import Python MySQL module when running a script using crontab
[英]Cannot import my own module when running script in Spyder
根据官方 Python 文档或这篇文章,将自己的模块导入脚本非常容易。 基本上我只需要创建 my.py 文件,将它们保存在一个目录中,然后我可以使用 import 它们
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>
/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 文件保存在同一文件夹中,只需使用 import os os.chdir("module folder") 将目录更改为当前 python 文件位置
它会起作用。 它只对我有用。:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.