You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python导入语句使用文件路径报错:ModuleNotFoundError问题咨询

解决跨目录Python模块导入报错的问题

我之前也踩过这个跨目录导入的坑!你的报错ModuleNotFoundError: No module named '__main__.Scripts'; '__main__' is not a package,本质是因为Python找不到Scripts这个包的路径,而且主脚本(mainprogram.py)作为__main__运行时,不能直接用相对导入。下面给你几个实用的解决办法:

方法1:把Scripts变成Python包

这是最规范的做法:

  • 在Scripts文件夹里新建一个空的__init__.py文件(哪怕文件里什么都不写也行),这样Python就会把Scripts识别为一个可导入的包。
  • 然后在mainprogram.py里用下面的语句导入:
    from Scripts.Data import *
    # 或者如果你不想导入所有函数,也可以指定具体函数:from Scripts.Data import func1, func2
    

方法2:手动添加路径到sys.path

如果不想改文件夹结构,可以在mainprogram.py的最开头添加代码,把Scripts目录加入Python的模块搜索路径:

import sys
import os

# 获取当前mainprogram.py所在的目录
current_dir = os.path.dirname(__file__)
# 拼接Scripts目录的路径
scripts_dir = os.path.join(current_dir, 'Scripts')
# 把Scripts目录添加到sys.path
sys.path.append(scripts_dir)

# 现在就可以正常导入了
from Data import *

方法3:用IDE标记Sources Root(如果用IDE开发)

如果你是用PyCharm、VS Code这类IDE:

  • 右键Scripts文件夹,选择Mark Directory as -> Sources Root(PyCharm),或者在VS Code的设置里把Scripts添加到Python路径。
  • 这样IDE会自动帮你把这个目录加入到Python的搜索路径里,直接用from Scripts.Data import *就能正常导入了。

注意点

别用相对导入(比如from .Scripts.Data import *),因为当你直接运行mainprogram.py时,它是作为__main__模块执行的,不是一个包,相对导入在这种场景下会报错。

内容的提问来源于stack exchange,提问作者Joe Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:13:51