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

Python模块导入报错:如何在player.py中导入map.py?疑与文件夹名有关

解决Python模块导入失败的问题

首先明确:根文件夹名称里的横杠确实会造成影响,但你当前导入失败的核心原因是路径配置和模块命名规范的问题,下面分点说明解决方案:

为什么横杠会有问题?

Python的模块名不允许包含横杠,因为横杠在语法里是减号运算符,解释器会把project-main当成project - main来解析,自然无法识别成合法的模块名,这也是from project-main.map import *直接报错的原因。

正确的导入方法

针对你的文件夹结构,有两种可靠的解决方式:

方式1:使用相对导入(推荐规范的包结构)

  1. 在project-main文件夹里新建一个空的__init__.py文件,让它变成Python可识别的包。
  2. 在player.py里使用相对导入语法:
    from ..map import *
    
    注意:这种方式要求你不能直接运行player.py,必须从project-main的上级目录运行脚本(比如执行python -m project-main.assets.player),否则相对导入会失效。

方式2:手动添加模块搜索路径(适合直接运行player.py)

如果习惯直接运行player.py,可以在文件开头把project-main的路径添加到Python的模块搜索列表里:

import sys
from pathlib import Path

# 获取project-main文件夹的绝对路径并添加到sys.path
sys.path.append(str(Path(__file__).parent.parent))
from map import *

额外建议

最好把project-main重命名为project_main(用下划线代替横杠),完全符合Python的模块命名规范,后续不管是自己导入还是第三方工具识别,都不会再出现类似的命名问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:14:54