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

RedHat Linux下Python相对导入遇utils模块找不到错误的解决办法

解决Python模块导入错误的方法

目录结构

.
├── another_dir
│   └── main.py
└── utils
    ├── __init__.py
    ├── config.py
    └── helper.py

问题原因

运行another_dir/main.py时抛出no module utils错误,是因为Python默认只会把当前脚本所在的another_dir目录加入模块搜索路径,而utils所在的上层根目录不在搜索范围内,导致无法找到该模块。

以下是几种在RedHat Linux中可行的解决方式:

方法1:在代码中手动添加模块搜索路径

在main.py开头加入代码,将utils所在的根目录添加到Python的模块搜索路径中:

import sys
import os

# 获取当前脚本的绝对路径,进而得到上层根目录
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(root_path)

# 现在可以正常导入utils模块
from utils import config
from utils import helper

方法2:通过环境变量PYTHONPATH指定路径

在运行脚本前,将根目录添加到PYTHONPATH环境变量中(适用于临时测试场景):

  1. 切换到项目根目录(即包含another_dir和utils的目录)
  2. 执行以下命令设置环境变量并运行脚本:
export PYTHONPATH=$(pwd):$PYTHONPATH
python another_dir/main.py

如果是绝对路径,比如项目根目录为/home/user/my_project,可以直接写:

export PYTHONPATH=/home/user/my_project:$PYTHONPATH
python /home/user/my_project/another_dir/main.py

方法3:使用相对导入(需以模块方式运行脚本)

修改main.py的导入语句为相对路径格式:

from ..utils import config
from ..utils import helper

然后在项目根目录下,以模块的方式运行main.py:

python -m another_dir.main

注意:这种方式不能直接用python another_dir/main.py运行,必须通过-m参数指定模块路径,否则会触发相对导入错误。

方法4:将项目作为可安装包(适合长期维护的项目)

在项目根目录下创建setup.py文件,内容如下:

from setuptools import setup, find_packages

setup(
    name="my_project",
    version="0.1",
    packages=find_packages()
)

然后在根目录下执行命令,以可编辑模式安装项目:

pip install -e .

安装完成后,无论在哪个目录运行main.py,都能直接导入utils模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 04:15:29