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

Python3使用requirements.txt时,如何在源码中实现绝对导入?

问题:运行Python项目时出现ModuleNotFoundError: No module named 'src'

项目详情

目录结构

my_project
|
|_venv/
|
|_requirements.txt
|
|_src
  |
  |_main.py
  |
  |_input_data.py

文件内容

  • requirements.txt:
numpy
pydantic
  • src/input_data.py:
class A:
    name = "a1"
  • src/main.py:
from src.input_data import A

print(f"{A.name}")

报错信息

执行pip install -r requirements.txt安装依赖后,运行python src/main.py出现以下错误:

Traceback (most recent call last):
  File ".../my_project/src/main.py", line 1, in <module>
    from src.input_data import A
ModuleNotFoundError: No module named 'src'

无需修改目录结构的解决方案

方案1:临时设置PYTHONPATH环境变量

在my_project根目录下执行命令,将当前目录添加到Python的模块搜索路径:

  • Linux/macOS:
    PYTHONPATH=$(pwd) python src/main.py
    
    或先设置环境变量再运行:
    export PYTHONPATH=$(pwd)
    python src/main.py
    
  • Windows(CMD):
    set PYTHONPATH=%cd%
    python src/main.py
    
  • Windows(PowerShell):
    $env:PYTHONPATH = Get-Location
    python src/main.py
    

方案2:改用模块方式运行并调整导入语句

  1. 修改src/main.py的导入语句为相对导入:
    from .input_data import A
    
    print(f"{A.name}")
    
  2. 在my_project根目录下执行模块运行命令:
    python -m src.main
    
    该方式会自动将当前目录加入模块搜索路径,Python会识别src为合法包。

方案3:添加__init__.py并保留原导入语句

  1. 在src目录下创建空的__init__.py文件,标记src为Python包:
    touch src/__init__.py  # Linux/macOS
    # Windows可手动创建空文件
    
  2. 在my_project根目录下用模块方式运行:
    python -m src.main
    
    此时main.py中原导入语句from src.input_data import A可正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:18:31