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

Python本地导入报错:如何从src/data/compute_embeddings.py导入src/constants.py?

Python跨模块导入问题解决方案

项目结构

.
├── data
│   └── raw
│       └── sample.xlsx
├── __init__.py
├── notebooks
│   └── clustering.ipynb
└── src
    ├── constants.py
    ├── data
    │   ├── compute_embeddings.py
    │   └── __init__.py
    ├── embeddings.py
    └── __init__.py

问题说明

从src/data/compute_embeddings.py导入src/constants.py时遇到导入错误:

  • 执行python src/data/compute_embeddings.py时:
    导入方式错误信息
    from src.constants import ...ModuleNotFoundError: No module named 'src'
    from ..constants import ...ImportError: attempted relative import with no known parent package
  • 尝试模块方式运行python -m src/data/compute_embeddings,报错No module named src/data/compute_embeddings。

不希望通过在脚本开头添加sys.path.append(...)解决,以下是合理方案:


方案1:使用正确的模块运行命令

模块运行需用点分隔符代替斜杠,在项目根目录执行:

python -m src.data.compute_embeddings

此时在compute_embeddings.py中可选择:

  • 绝对导入:
    from src.constants import ...
    
  • 相对导入:
    from ..constants import ...
    

方案2:设置PYTHONPATH环境变量

在项目根目录执行对应系统的命令,将项目根目录加入Python路径:

  • Linux/macOS:
    export PYTHONPATH=$(pwd)
    
  • Windows(PowerShell):
    $env:PYTHONPATH = Get-Location
    

设置完成后直接运行脚本即可:

python src/data/compute_embeddings.py

此时src会被识别为可导入模块,使用from src.constants import ...即可正常导入。

若要永久生效,可将上述命令添加到shell配置文件(如~/.bashrc、~/.zshrc)。

方案3:安装为可编辑包

在项目根目录创建pyproject.toml文件:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "your-project-name"
version = "0.1.0"

执行以下命令将项目安装为可编辑模式:

pip install -e .

安装后,src会被视为全局可导入的包,无论以哪种方式运行脚本,都可以使用from src.constants import ...完成导入。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:52:59