pip install package not from pypi,其名称与pypi中的名称相同(+具有来自pypi的依赖项)

Pip install package not from pypi, whose name is the same as one in pypi ( + with dependencies from pypi )

我有一个 python 包,托管在 azure (vsts) 上,而不是在 pypi 上,其依赖项是 python 存在于 pypi 中的包。

我发现我的包与 pypi 上的包同名。

有没有办法用pip安装我的包,指定我的包之前必须在vsts上搜索,而依赖项可以从pypi中获取?

如果我使用 --index-url 选项:

pip install <my-package> --index-url https://<my-package>:<PAT>@<url>/<proj>/_packaging/<my-package>/pypi/simple/

pip 能够找到我的包,尝试安装它,但它无法安装任何依赖项(因为它在同一个 url 中搜索所有依赖项,这是错误的,因为我没有托管,比方说,我自己的 numpy 版本或 vsts 上的其他软件包)。

(这是问题所在:

如果我改用 --extra-index-url 选项:

pip install <my-package> --extra-index-url https://<my-package>:<PAT>@<url>/<proj>/_packaging/<my-package>/pypi/simple/

所有的依赖都找到了,但问题是这并没有安装我的包,而是安装了pypi中的同名包!

即使 --extra-index-url 存在,似乎 pypi 被优先考虑,因此我指定的 url 处的包被隐藏并且没有被正确找到并且安装。

有没有办法告诉 pip 它应该优先考虑我的 --extra-index-url?或者给 pip 一个 --index-url 应该只对一个包有效但对它的依赖无效?

您需要指向 VSTS 的索引 URL 和指向 PyPI 的额外 URL:

pip install --index-url=https://<my-package>:<PAT>@<url>/<proj>/_packaging/<my-package>/pypi/simple/ --extra-index-url=https://pypi.org/simple/ <my-package>