Poetry无法识别补充源:如何仅在依赖包中定义自定义源?
解决方法
方案1:直接给依赖指定完整下载URL
把custom源里的依赖,在my-package的pyproject.toml里写成带具体URL的形式,不用依赖源名称。示例:
[tool.poetry.dependencies] python = "^3.8" # 替换成你实际的依赖包地址,支持wheel、tar.gz、git仓库等格式 custom-dep = { url = "https://custom-source-url.com/packages/custom-dep-1.0.0-py3-none-any.whl" }
这样在my-repo里安装my-package时,Poetry会直接从这个URL拉取依赖,无需在my-repo中配置custom源。
方案2:把依赖代码嵌入my-package(适合小依赖)
如果custom源里的依赖是个小型私有包,直接把它的代码复制到my-package的目录中,比如创建vendor文件夹存放依赖代码,然后在my-package的pyproject.toml里添加配置:
[tool.poetry] include = ["vendor/**/*"]
之后调整my-package里的导入路径,确保能正常引用这个嵌入的依赖。这种方式完全不需要额外源配置,但仅适合依赖体积小、更新频率低的场景。
方案3:临时添加源(折中,不留下冗余配置)
要是非得保留源的配置方式,可以用extras配合临时命令操作:
- 在my-package的
pyproject.toml里定义extras:[tool.poetry.extras] custom = ["custom-dep"] - 在my-repo里执行安装时,临时添加源完成安装后再移除:
poetry source add custom https://custom-source-url.com poetry add my-package[custom] poetry source remove custom
这样不会在my-repo的配置文件里留下多余的源信息,但需要多执行两条命令。
补充:Poetry本身不支持将包的源配置传递给安装环境,因为源属于安装环境的项目/全局配置,并非包自带的元数据。上述方案中,方案1是最通用、无冗余的解决方式。
内容的提问来源于stack exchange,提问作者user2374087
相关产品推荐
相关产品推荐

