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

跨目录导入Python模块时遇ModuleNotFoundError的求助

解决Python跨目录导入ModuleNotFoundError问题

以下是针对你遇到的跨目录导入问题的几种可行解决方案,按实用性和适用场景排序:

方案一:临时添加主项目路径到Python搜索路径(快速测试)

在Testing/testing.py的最开头添加以下代码,将主项目目录手动加入Python的模块搜索路径:

import sys
import os
# 获取当前文件的父目录的父目录(即主项目目录)
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

添加后即可正常使用你之前尝试的导入语句:

from Utilities.deck import Deck
# 或者通过Utilities的__init__.py导出内容导入
from Utilities import Deck

方案二:使用相对导入(需以包形式运行)

利用Python的相对导入语法,在testing.py中使用:

from ..Utilities.deck import Deck

注意:不能直接在Testing目录下执行python testing.py,必须回到主项目目录,用模块方式运行测试文件:

# 主项目目录下执行
python -m Testing.testing

直接运行脚本时,脚本会被视为顶层模块,相对导入的层级关系会失效,因此必须用-m参数以包的形式启动。

方案三:将项目配置为可安装包(团队协作首选)

这种方式能彻底解决团队成员的导入路径不一致问题,步骤如下:

  1. 在主项目目录下创建setup.py文件,内容如下:
from setuptools import setup, find_packages

setup(
    name="your-project-name",  # 替换为你的项目名称
    version="0.1.0",
    packages=find_packages(),  # 自动识别所有含__init__.py的子目录
)
  1. 团队所有成员在主项目目录下执行开发模式安装:
pip install -e .

安装完成后,无论在项目内哪个目录,都可以直接使用from Utilities.deck import Deck这类导入语句,无需额外配置路径。

方案四:设置PYTHONPATH环境变量(全局生效)

通过环境变量将主项目目录加入Python的模块搜索路径:

  • Linux/Mac终端:进入主项目目录后执行
    export PYTHONPATH=$(pwd):$PYTHONPATH
    
    如果需要永久生效,可以将上述命令添加到~/.bashrc或~/.zshrc文件中。
  • Windows CMD:进入主项目目录后执行
    set PYTHONPATH=%cd%;%PYTHONPATH%
    
  • Windows PowerShell:进入主项目目录后执行
    $env:PYTHONPATH = "$(Get-Location);$env:PYTHONPATH"
    

设置完成后,直接运行testing.py也不会出现导入错误。

额外注意事项

  • 你已添加的__init__.py文件配置是正确的,无需修改;空白的__init__.py也可以满足包的标识需求。
  • 团队协作时,优先推荐方案三,避免每个人手动配置路径带来的不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:05:49