在Spyder中运行脚本无法导入自定义模块,求解决方法
嘿,我之前也碰到过一模一样的问题!别着急,咱们一步步排查解决:
检查文件名与导入语句的大小写一致性
注意:Linux和macOS系统是大小写敏感的,如果你的文件实际是webscraper.py,但你用from WebScraper import ...就会报错。Windows虽然不敏感,但为了跨平台兼容,建议文件名和导入时的名称完全一致,比如文件叫WebScraper.py,导入就用from WebScraper import ...。确认脚本运行的工作目录
有时候你运行脚本的路径并不是模块所在的目录。比如你的模块在project/文件夹下,但你在project/的上级目录运行python project/your_script.py,这时候Python会从当前工作目录(上级目录)找模块,自然找不到。
解决方法有两种:- 切换到模块所在的目录再运行脚本:
cd project && python your_script.py - 在导入前手动把模块所在目录添加到Python路径:
import sys from pathlib import Path # 获取当前脚本所在的目录 current_dir = Path(__file__).parent # 将目录添加到sys.path sys.path.append(str(current_dir)) # 现在就可以正常导入了 from WebScraper import your_target_function
- 切换到模块所在的目录再运行脚本:
排查同名冲突
检查一下有没有和WebScraper同名的文件或目录,比如有没有一个叫WebScraper的文件夹,或者有没有安装过同名的第三方库。如果有,把你的模块改个独特的名字(比如MyWebScraper.py)再试试。添加__init__.py文件(可选)
虽然Python 3.3+支持无__init__.py的命名空间包,但有些旧版本环境或者IDE(比如PyCharm的某些配置)需要在模块所在目录创建一个空的__init__.py文件,来让Python识别这个目录为一个可导入的包。检查IDE的运行配置
如果你用PyCharm、VS Code这类IDE,去看看脚本的运行配置里,「工作目录」是不是设成了模块所在的目录。如果不是,改成模块所在的目录再重新运行。
内容的提问来源于stack exchange,提问作者Hendrra

