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

如何在pyproject.toml中指定本地相对依赖?

问题描述

项目结构如下:

root
  - sample/
    - src/
    - tests/
    - pyproject.toml
  - libs/
    - lol/
      - src/
      - tests/
      - pyproject.toml

想要在sample/pyproject.toml中指定lol作为依赖,尝试以下写法后报错:

dependencies = [ 
   "lol @ file://libs/lol"
]

错误信息:

ValueError: non-local file URIs are not supported on this platform: 'file://libs/lol'

需求:不能用绝对路径,不能使用Poetry等第三方工具,希望找到用相对路径、环境变量或占位符的解决办法。


解决方案

1. 直接使用相对路径(最简便)

pip支持无需file://前缀的相对路径依赖声明,直接基于sample目录的相对路径填写即可。修改sample/pyproject.toml:

dependencies = [
    "lol @ ../libs/lol"
]

这里../libs/lol表示从sample目录回到上级(root),再进入libs/lol目录,是符合项目结构的相对路径,pip能正确识别并安装本地依赖。

2. 用环境变量灵活指定路径

如果需要更灵活的路径配置,可以分离依赖名和路径:

  • 先修改sample/pyproject.toml只保留包名:
dependencies = [
    "lol"
]
  • 安装时通过--find-links参数结合环境变量指定依赖位置:
# Linux/macOS 设置环境变量
export LOL_DEP_PATH="../libs/lol"
# Windows cmd 设置环境变量
set LOL_DEP_PATH=..\libs\lol
# Windows PowerShell 设置环境变量
$env:LOL_DEP_PATH = "..\libs\lol"

# 安装sample及其依赖
pip install -e . --find-links=$LOL_DEP_PATH  # Linux/macOS/PowerShell
pip install -e . --find-links=%LOL_DEP_PATH%  # Windows cmd

这种方式适合团队内存在不同目录结构的场景,通过环境变量统一配置路径即可。

3. 结合setuptools的setup.cfg配置(若用setuptools构建)

如果项目基于setuptools,也可以在sample/setup.cfg中配置依赖:

[options]
install_requires =
    lol @ ../libs/lol

原理和第一种方法一致,pip会自动解析相对路径安装本地包。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:55:20