如何让pip自动安装Gizmo的本地wheel依赖acme_transfunctioner?
解决pip自动安装本地wheel依赖的问题
问题根源
你当前的pyproject.toml里,[tool.poetry.dependencies]中对acme_transfunctioner的本地路径配置是Poetry专属规则,pip解析wheel包的依赖元数据时,只会读取[project]区块下的配置——而这部分你只声明了版本要求,未指定本地包的位置,所以pip会默认去公开PyPI查找,自然找不到内部开发的包。
可行解决方案
方案1:安装时通过--find-links指定依赖目录
直接在pip安装命令里添加本地依赖的查找路径,让pip知晓去哪里获取acme_transfunctioner的wheel包:
pip install dist/gizmo-1.5.0-py3-none-any.whl --find-links dist/depend/
这个方法无需修改pyproject.toml,适合临时或单环境安装场景。
方案2:修改[project]依赖为PEP 508格式的本地路径
更新pyproject.toml的[project]部分,用PEP 508标准的本地文件路径格式声明依赖,这样pip解析wheel元数据时会直接读取本地包路径:
[project] name = "Gizmo" version = "1.5.0" requires-python = ">=3.9" dependencies = [ "pycairo~=1.21.0", "PyGObject~=3.42.0", "PyGObject-stubs~=1.0.0", # 使用绝对路径(推荐)或相对路径(注意路径需与安装环境匹配) "acme_transfunctioner>=1.3.0 @ file:///full/path/to/dist/depend/acme_transfunctioner-1.3.0-py3-none-any.whl" ]
注意:相对路径在wheel分发到其他机器时可能因路径不匹配失效,优先使用绝对路径或结合方案1的
--find-links更灵活。
方案3:搭建本地PyPI仓库(适合团队共享)
如果是团队内部协作场景,把acme_transfunctioner上传到本地PyPI仓库(如devpi、localpypi),安装时指定本地仓库地址:
pip install dist/gizmo-1.5.0-py3-none-any.whl --index-url http://your-local-pypi-url/simple/
也可将本地仓库地址配置到pip.conf中,避免每次安装重复加参数。
额外说明
如果用Poetry构建和安装项目,直接运行poetry install可以自动处理[tool.poetry.dependencies]里的本地依赖,但如果是分发wheel给仅使用pip的用户,必须通过上述方法让pip能定位到本地依赖包。
内容的提问来源于stack exchange,提问作者Olumide
相关产品推荐
相关产品推荐

