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

Python项目根目录多src目录与setup.py、pip install -e配置问题

解决双src目录的可编辑安装问题

首先先理清楚正确的项目结构,避免路径映射错误:

你的项目根目录/
├── setup.py
├── src/  # 旧代码目录,对应原有导入路径
│   ├── weak_supervision/
│   │   ├── __init__.py  # 必须有这个文件,标识为Python包
│   │   └── 你的旧代码文件.py
└── src_math_evaporate/  # 新代码目录,独立包
    ├── math_evaporate/
    │   ├── __init__.py
    │   └── 你的新代码文件.py

方案一:明确映射包路径(推荐,适合包结构简单的情况)

修改setup.py,用package_dir把每个包映射到对应的src目录,同时在packages里列出所有要安装的包:

from setuptools import setup

setup(
    name="你的项目名",
    version="0.1.0",
    # 包名: 实际所在路径
    package_dir={
        "weak_supervision": "src/weak_supervision",
        "math_evaporate": "src_math_evaporate/math_evaporate"
    },
    # 列出所有要安装的包
    packages=["weak_supervision", "math_evaporate"],
    # 按需添加其他配置,比如依赖
    # install_requires=[...]
)

方案二:自动查找多目录下的包(适合包较多的情况)

如果你的两个src目录下有多个子包,可以用find_packages自动识别,同时指定查找路径:

from setuptools import setup, find_packages

setup(
    name="你的项目名",
    version="0.1.0",
    # 告诉setuptools,根包(空字符串对应的包)的查找目录是src和src_math_evaporate
    package_dir={"": ["src", "src_math_evaporate"]},
    # 在这两个目录下查找所有包
    packages=find_packages(where=["src", "src_math_evaporate"]),
)

为什么你之前会报错?

你之前的package_dir配置应该是把weak_supervision的路径指向了src_math_evaporate/weak_supervision,但这个目录根本不存在——旧代码的weak_supervision其实在src目录下,所以路径映射完全错了,才会触发目录不存在的错误。

验证步骤

  1. 按上面的结构调整项目目录,确保每个包目录下都有__init__.py
  2. 修改setup.py为上述任意一种配置
  3. 执行pip install -e .,安装后测试导入:
    import weak_supervision  # 旧代码包,导入路径不变
    import math_evaporate     # 新代码包,独立导入
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:43:18