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

Python项目导入classes模块触发ModuleNotFoundError的问题咨询

解决Python模块导入错误:ModuleNotFoundError: No module named 'classes'

项目结构

classes/
├─ __init__.py
├─ card.py
├─ find.py
├─ player.py
├─ table.py
.gitignore
main.py

当前__init__.py内容

from .card import *
from .player import *
from .table import *

出错的导入代码(table.py中)

from classes import Player
from classes import Card, CardType, CardValue, HandValue

错误信息

Traceback (most recent call last):
  File "/home/adrian/Desktop/Programozas/Poker/classes/table.py", line 1, in <module>
    from classes import Player
ModuleNotFoundError: No module named 'classes'

解决方法

方法一:使用相对导入(推荐)

table.py和player.py、card.py同属classes包,直接用相对路径导入即可:

# 修改table.py中的导入代码
from .player import Player
from .card import Card, CardType, CardValue, HandValue

方法二:使用绝对导入

确保项目根目录(即包含classes文件夹和main.py的目录)在Python的模块搜索路径中:

  1. 从项目根目录运行程序,比如在/home/adrian/Desktop/Programozas/Poker/目录下执行:
    python main.py
    
  2. 然后在table.py中使用绝对导入:
    from classes.player import Player
    from classes.card import Card, CardType, CardValue, HandValue
    

方法三:临时添加根目录到搜索路径(不推荐)

如果无法从根目录启动程序,可以在table.py开头添加代码,手动将项目根目录加入Python的模块搜索路径:

import sys
import os
# 获取当前文件的上层目录(项目根目录)并加入搜索路径
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from classes.player import Player
from classes.card import Card, CardType, CardValue, HandValue

原因说明

table.py本身位于classes文件夹内,Python默认的模块搜索路径不包含该文件夹的上层目录,因此直接用from classes import ...会找不到模块。相对导入适用于同包内的模块引用,绝对导入则需要确保上层目录被Python识别为模块搜索路径的一部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:15:52