如何在pyproject.toml中添加私有PyPI源的Python包依赖?
如何在pyproject.toml中按PEP 508规范添加私有PyPI索引的依赖包?
你当前的写法存在问题:mypackage1@http://myprivatepypiserver/simple/会让pip把索引服务器地址当成包的直接下载URL,而非从该索引搜索安装包,必然导致安装失败。
按照PEP 508规范,正确的写法有两种,可按需选择:
方式一:在依赖项中直接指定索引地址
在dependencies数组里,给mypackage1添加索引条件,明确告诉工具从指定私有索引拉取该包:
[project] name = "mypackage2" version = "0.0.1" dependencies = [ "pandas", "mypackage1; index-url='http://myprivatepypiserver/simple/'" ]
注意toml的引号规则:外层用双引号包裹整个依赖字符串,内层索引地址用单引号,避免转义冲突。
方式二:全局配置私有索引(适用于多个依赖都来自同一私有源)
如果你的项目有多个依赖都托管在这个私有PyPI,可以单独配置索引,再声明依赖:
[project] name = "mypackage2" version = "0.0.1" dependencies = [ "pandas", "mypackage1" ] [tool.pip.indexes] private_pypi = { url = "http://myprivatepypiserver/simple/" } [tool.pip.index-urls] # 让pip同时搜索公共PyPI和私有索引 public_and_private = ["https://pypi.org/simple", "private_pypi"]
这种方式下,pip会自动从配置的索引中查找mypackage1,无需在每个依赖项里重复写索引地址。
额外提示
如果私有索引需要身份认证,可以把认证信息嵌入URL(注意不要提交到版本控制,建议用环境变量替代硬编码):
"mypackage1; index-url='http://your_username:your_password@myprivatepypiserver/simple/'"
验证配置是否正确的方法:在项目根目录执行pip install .,查看pip是否能成功从私有索引拉取mypackage1并完成安装。
内容的提问来源于stack exchange,提问作者cpage
相关产品推荐
相关产品推荐

