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

Python项目导入src模块报错ModuleNotFoundError的解决求助

解决Docker Compose创建PostgreSQL数据库的事务错误
  • 问题原因:PostgreSQL官方镜像会将初始化脚本包裹在事务中执行,而CREATE DATABASE命令不允许在事务内运行,导致报错。
  • 解决方案:
    1. 直接用环境变量指定初始数据库:在docker-compose.yml里给postgres服务添加POSTGRES_DB环境变量,镜像会自动创建这个数据库,无需手动执行CREATE DATABASE命令。示例配置:
      version: '3.8'
      services:
        postgres:
          image: postgres
          environment:
            POSTGRES_USER: myuser
            POSTGRES_PASSWORD: mypassword
            POSTGRES_DB: mydb  # 自动创建目标数据库
          ports:
            - "5432:5432"
          volumes:
            - postgres_data:/var/lib/postgresql/data
      volumes:
        postgres_data:
      
    2. 自定义初始化脚本规避事务:若需创建多个数据库,将初始化脚本放在docker-entrypoint-initdb.d目录下(命名为.sql后缀),脚本开头添加\set ON_ERROR_STOP on避免事务包裹。示例init-db.sql:
      \set ON_ERROR_STOP on
      CREATE DATABASE mydb;
      -- 其他初始化命令(如创建表、用户等)
      
      再在docker-compose.yml中挂载该脚本:
      services:
        postgres:
          # 其他配置保持不变
          volumes:
            - ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql
            - postgres_data:/var/lib/postgresql/data
      
解决测试文件导入src模块的错误
  • 问题原因:Python解释器运行测试时,未将项目根目录加入模块搜索路径(PYTHONPATH),导致无法识别src模块。
  • 解决方案:
    1. 临时设置PYTHONPATH:运行测试前在终端执行命令,将项目根目录加入环境变量:
      # Linux/macOS
      export PYTHONPATH=$(pwd)
      pytest
      
      # Windows(PowerShell)
      $env:PYTHONPATH = $(Get-Location)
      pytest
      
    2. 在conftest.py中动态添加路径:在项目根目录的conftest.py开头添加以下代码,手动将根目录加入搜索路径:
      import sys
      from pathlib import Path
      
      project_root = Path(__file__).parent
      sys.path.append(str(project_root))
      
    3. 用配置文件声明项目结构:在项目根目录创建pyproject.toml,指定src为源码目录,让pytest自动识别:
      [tool.pytest.ini_options]
      pythonpath = ["src"]
      
      或者配置setuptools并安装为可编辑模式:
      [build-system]
      requires = ["setuptools>=61.0"]
      build-backend = "setuptools.build_meta"
      
      [project]
      name = "your-project-name"
      version = "0.1.0"
      packages = ["src"]
      
      执行安装命令:
      pip install -e .
      

内容的提问来源于stack exchange,提问作者Bruno Henrique Peixoto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:06:02