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

Python跨目录导入报错:test目录无法识别scripts模块怎么办?

解决test目录下Python脚本无法导入scripts模块的问题

问题原因

Python运行脚本时,会将脚本所在的当前目录加入模块搜索路径sys.path。根目录下的main.py运行时,根目录在搜索路径中,因此能识别scripts子模块;但test/test_scripts.py运行时,当前目录是test,项目根目录不在搜索路径中,所以找不到scripts模块。

以下是几种实用解决方法:

  • 方法1:在测试脚本中手动添加项目根目录到搜索路径
    在test_scripts.py开头添加代码,将项目根目录(test文件夹的父目录)加入sys.path:

    import sys
    from pathlib import Path
    
    # 获取项目根目录(当前脚本所在目录的父目录)
    root_dir = Path(__file__).resolve().parent.parent
    sys.path.append(str(root_dir))
    
    # 后续正常导入模块
    from scripts.helpful_scripts import *
    from scripts.print_something import *
    
    print(add(1, 2))
    print_something()
    

    优点:无需额外配置,修改单个脚本即可生效;缺点:每个测试脚本都需添加这段代码。

  • 方法2:从项目根目录以模块方式运行测试脚本
    切换到项目根目录,执行以下命令运行测试脚本:

    python -m test.test_scripts
    

    这种方式会自动将项目根目录加入模块搜索路径,无需修改代码。
    优点:不用改代码,适合日常测试;缺点:每次需从根目录执行命令。

  • 方法3:设置PYTHONPATH环境变量
    将项目根目录添加到PYTHONPATH,让Python全局识别该路径下的模块:

    • Linux/macOS终端:
      export PYTHONPATH=/path/to/your/project/root
      
    • Windows命令提示符:
      set PYTHONPATH=C:\path\to\your\project\root
      

    设置后,任何目录下运行test_scripts.py都能正常导入模块。
    优点:一次配置,所有脚本生效;缺点:仅当前终端会话有效,可写入shell配置文件实现永久生效。

  • 方法4:将项目安装为可编辑模块
    在项目根目录创建setup.py文件:

    from setuptools import setup, find_packages
    
    setup(
        name="your-project",
        version="0.1.0",
        packages=find_packages(),
    )
    

    然后在根目录执行命令安装可编辑版本:

    pip install -e .
    

    这样scripts会被注册为全局模块,任何位置的脚本都能直接导入。
    优点:适合长期开发项目,无需额外路径配置;缺点:需创建配置文件,更适合正式项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:01:25