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

如何引用Python模块目录外的源文件?解决跨目录构建问题

两种解决方法实现方案

方案1:让构建过程复制兄弟目录到临时位置

python -m build会先执行sdist生成源码包,再解压到临时目录构建,所以要让sdist把兄弟目录的源文件一起打包:

  • 在项目根目录(py/的父目录)新建MANIFEST.in文件,写入:
    include sibling1/*.cpp
    include sibling2/*.cpp
    # 依次添加所有需要的兄弟目录cpp文件
    include siblingN/*.cpp
    
  • 正常执行python3.11 -m build .即可,此时sdist会把兄弟目录的源文件打包进源码包,临时构建目录里就能找到对应文件。

方案2:直接指向原始top目录构建(更优)

这种方法无需复制文件,直接调用原始目录的源文件构建,避免冗余操作:

方法一:原地构建扩展模块

在py/目录下执行命令:

python3.11 setup.py build_ext --inplace

该命令会直接在当前目录生成扩展模块,不会将源码复制到临时目录,之前用绝对路径指定的兄弟目录源文件能被正确识别。

方法二:可编辑安装(适合开发阶段)

如果需要开发时修改代码即时生效,执行:

pip install -e ./py/

这会创建指向原始源码的链接,构建时直接使用原始目录的文件,不会复制到临时位置。

方法三:调整build命令参数(保留build工具流程)

若必须使用python -m build,可配合参数跳过隔离环境并直接读取本地文件(仅适合本地开发,发布建议用方案1):

python3.11 -m build --wheel --no-isolation --skip-dependency-check

--no-isolation使用当前环境而非新建虚拟环境,--skip-dependency-check跳过依赖检查,此时构建工具会直接读取原始目录的兄弟文件。

内容的提问来源于stack exchange,提问作者Mikhail T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:12:21