pip安装依赖psycopg2-binary的自定义包报错,能否无需预安装该依赖?
问题背景
我的Python包的setup.py文件中声明了如下依赖:
install_requires=['psycopg2-binary==2.9.9', ...]
在虚拟环境中执行以下命令安装该自定义包时出现错误:
执行命令
pip install --index-url https://some-region.pkg.dev/myproject/mypackage/simple/ mypackage
错误信息
ERROR: Could not find a version that satisfies the requirement psycopg2-binary==2.9.9 (from mypackage) (from versions: none) ERROR: No matching distribution found for psycopg2-binary==2.9.9
手动执行pip install psycopg2-binary==2.9.9可正常安装该依赖,提前安装后再执行自定义包的安装命令就能成功完成。
核心问题
能否无需提前安装psycopg2(-binary),直接完成自定义包的安装(其他依赖无此问题)?
解决方案
可以通过以下几种方法解决,无需提前手动安装依赖:
命令行添加PyPI作为额外索引源
问题本质是你指定了私有仓库作为唯一索引源,pip仅会在该私有仓库内查找psycopg2-binary,但该依赖只存在于PyPI中。执行安装时同时指定PyPI作为额外索引:pip install --index-url https://some-region.pkg.dev/myproject/mypackage/simple/ --extra-index-url https://pypi.org/simple/ mypackage这样pip会优先从私有仓库拉取你的自定义包,再从PyPI获取
psycopg2-binary这类公共依赖。在setup.py中指定依赖的专属索引源(需pip 19.0+支持)
修改setup.py的依赖声明,给psycopg2-binary直接指定PyPI源:install_requires=[ 'psycopg2-binary==2.9.9 @ https://pypi.org/simple/psycopg2-binary/', # 其他依赖项 ]这种方式无需在命令行添加额外参数,pip会自动从指定源拉取该依赖。
配置pip默认索引(适合频繁从私有仓库安装的场景)
编辑pip的配置文件,设置默认的主索引和额外索引:- Linux/macOS路径:
~/.config/pip/pip.conf - Windows路径:
%APPDATA%\pip\pip.ini
添加以下内容:
[global] index-url = https://some-region.pkg.dev/myproject/mypackage/simple/ extra-index-url = https://pypi.org/simple/之后只需执行
pip install mypackage,pip就会自动从两个源分别拉取对应包。- Linux/macOS路径:
内容的提问来源于stack exchange,提问作者rook
相关产品推荐
相关产品推荐

