如何在pyproject.toml中配置自定义索引源与URL依赖?
基于pyproject.toml的依赖配置解决方案
以下是针对你提出的两种依赖安装场景的具体配置方法,完全符合pyproject.toml规范:
1. 从自定义PyPI索引源安装依赖
要实现等效于python -m pip install --pre --only-binary :all: -i https://pypi.anaconda.org/scientific-python-nightly-wheels/simple numpy scipy的配置,需在pyproject.toml中做如下设置:
全局配置方式(推荐)
这种方式会将自定义索引、预发布允许、仅二进制包的规则应用于所有依赖:
[tool.pip.index] # 添加自定义索引源 urls = ["https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"] # 允许安装预发布版本(等效于--pre) pre = true [tool.pip.install-options] # 仅安装二进制包(等效于--only-binary :all:) only-binary = [":all:"] # 声明依赖 dependencies = [ "numpy>=1.21", "scipy" ]
针对特定依赖的配置
如果仅想让numpy和scipy使用自定义索引,其他依赖用默认PyPI,可以这样写:
[tool.pip.index] pre = true [tool.pip.install-options] only-binary = [":all:"] dependencies = [ 'numpy>=1.21 ; pip_extra_index_urls=["https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"]', 'scipy ; pip_extra_index_urls=["https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"]' ]
2. 从指定URL安装WHL包
你之前的配置失败大概率是环境标记的语法问题,正确的配置如下:
基础可运行配置
确保环境标记的逻辑正确,分号后直接跟条件表达式:
dependencies = [ 'wxPython @ https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/wxPython-4.2.1-cp310-cp310-linux_x86_64.whl; python_version == "3.10" and sys_platform == "linux"' ]
安全增强:添加哈希校验
为了防止包被篡改,建议添加WHL文件的SHA256哈希值,格式为#sha256=哈希字符串:
dependencies = [ 'wxPython @ https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/wxPython-4.2.1-cp310-cp310-linux_x86_64.whl#sha256=替换为实际哈希值; python_version == "3.10" and sys_platform == "linux"' ]
你可以通过本地执行pip hash wxPython-4.2.1-cp310-cp310-linux_x86_64.whl命令获取该哈希值。
注意事项
- 确保WHL文件的URL是公开可访问的,否则pip无法完成下载。
- 若需更精确的环境匹配,可添加发行版相关标记,例如
platform_release == "5.15"(针对Ubuntu 22.04内核)。
内容的提问来源于stack exchange,提问作者Mathieu
相关产品推荐
相关产品推荐

