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

将main.py移入子目录后Python模块导入失败求助

Python模块导入问题

项目结构

├── main.py
└── tutorial_quickstart
    ├── __init__.py
    ├── data.py
    ├── neural_net.py
    ├── test.py
    └── train.py

原main.py导入代码

import torch
from torch import nn
from tutorial_quickstart.neural_net import NeuralNetwork
from tutorial_quickstart.data import get_training_data
from tutorial_quickstart.train import train
from tutorial_quickstart.test import test

问题场景

将main.py移入tutorial_quickstart目录后,执行命令:

$ python tutorial_quickstart/main.py

出现以下错误:

❯ python tutorial_quickstart/main.py
Traceback (most recent call last):
  File "/home/colin/code/chess-ml/tutorial_quickstart/main.py", line 3, in <module>
    from tutorial_quickstart.neural_net import NeuralNetwork
ModuleNotFoundError: No module named 'tutorial_quickstart'

但在项目根目录执行python main.py时一切正常。

环境说明

使用WSL2、VSCode和Anaconda,已在项目目录内创建conda环境,并手动选择该环境下的Python解释器。


解决方案

方案1:改用相对导入

把main.py的导入语句改成相对路径形式,适配它在tutorial_quickstart包内的位置:

import torch
from torch import nn
from .neural_net import NeuralNetwork
from .data import get_training_data
from .train import train
from .test import test

注意:直接运行main.py时会触发ImportError: attempted relative import with no known parent package,此时需要结合方案2的运行方式。

方案2:以包模块形式运行

保持原导入语句不变,在项目根目录执行以下命令:

python -m tutorial_quickstart.main

这种方式会自动将项目根目录加入Python的模块搜索路径,让解释器能识别tutorial_quickstart包。

方案3:手动添加根目录到搜索路径

在main.py开头添加代码,强制把项目根目录加入Python的搜索路径:

import sys
import os
# 获取当前文件所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取项目根目录(当前目录的上级目录)
root_dir = os.path.dirname(current_dir)
sys.path.append(root_dir)

# 原导入语句保持不变
import torch
from torch import nn
from tutorial_quickstart.neural_net import NeuralNetwork
from tutorial_quickstart.data import get_training_data
from tutorial_quickstart.train import train
from tutorial_quickstart.test import test

该方法不受运行路径限制,无论从哪个位置执行main.py都能正常导入模块。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:01:00