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

如何使用Poetry从指定目录安装对应平台的Wheel包?

用Poetry按平台从指定目录安装Wheel包的解决方案

直接配置Poetry的方法

方法1:按平台指定单个Wheel路径

如果每个平台的Wheel文件命名明确(比如包含linux/windows/darwin标识),可以在pyproject.toml里针对不同平台单独配置依赖:

[tool.poetry.dependencies]
python = "^3.8"
package_name = [
    { url = "file:///path/to/wheels/package_name-1.0.0-cp38-cp38-manylinux_2_17_x86_64.whl", platform = "linux" },
    { url = "file:///path/to/wheels/package_name-1.0.0-cp38-cp38-win_amd64.whl", platform = "windows" },
    { url = "file:///path/to/wheels/package_name-1.0.0-cp38-cp38-macosx_10_15_x86_64.whl", platform = "darwin" }
]

Poetry会自动识别当前运行平台,匹配对应的Wheel文件安装。

想要完全复刻pip的--no-index --find-links行为,可在pyproject.toml中添加本地Wheel目录作为优先级最高的源:

[[tool.poetry.source]]
name = "local-wheels"
url = "file:///path/to/wheels/"
priority = "primary"  # 优先使用本地源,跳过PyPI

[tool.poetry.dependencies]
python = "^3.8"
package_name = "1.0.0"

执行poetry install时,Poetry会从本地目录查找符合版本和平台要求的Wheel包,和pip的逻辑一致。


变通方案

方案1:封装Wheel为本地代理包

把目标Wheel放在单独目录,用一个简单的Poetry包封装它,通过构建脚本调用pip安装:

  1. 创建local_package_name目录,放入所有平台的Wheel文件
  2. 在该目录下创建pyproject.toml:
    [tool.poetry]
    name = "package_name"
    version = "1.0.0"
    description = "Local proxy for package_name wheels"
    authors = ["Your Name <your@email.com>"]
    
    [tool.poetry.dependencies]
    python = "^3.8"
    
    [tool.poetry.build]
    script = "build.py"
    
  3. 编写build.py脚本:
    import subprocess
    import sys
    
    # 调用pip安装对应平台的Wheel
    subprocess.run(
        [sys.executable, "-m", "pip", "install", "--no-index", "--find-links", ".", "package_name"],
        check=True
    )
    
    from setuptools import setup
    setup(name="package_name", version="1.0.0")
    
  4. 主项目的pyproject.toml中添加依赖:
    [tool.poetry.dependencies]
    package_name = { path = "./local_package_name" }
    
    这样Poetry安装时会触发代理包的构建脚本,自动安装匹配平台的Wheel。

方案2:直接用poetry run调用pip

如果不想修改配置文件,可在环境初始化后手动执行:

poetry run pip install --no-index --find-links /path/to/wheels/ package_name

这种方式简单直接,适合临时场景,但每次重建虚拟环境都需要重新执行。

方案3:自定义Poetry插件(进阶)

如果需要长期灵活控制,可编写Poetry插件,在安装阶段自动检测平台并从指定目录选择对应Wheel。这种方式需要具备Python插件开发能力,适合大型项目的长期维护。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:30