`pipenv install --index` 和 `pipenv install --pypi-mirror` 有什么区别?

What's the difference between `pipenv install --index` and `pipenv install --pypi-mirror`?

pipenv install 命令参考 here.

-i, --index Target PyPI-compatible package index url.

--pypi-mirror Specify a PyPI mirror.

另外,环境变量PIP_INDEX_URL对应--indexPIPENV_PYPI_MIRROR对应--pypi-mirror

如果我得到一个 pypi 镜像 url,将它作为 --index=<url>--pypi-mirror=<url> 传递有什么区别?看来这两种方法都适合我。

这是一个有趣的问题,pipenv 的文档不清楚这两个选项的区别,那么最好的来源是its source code,截至 v2018.11.26 版本,其行为大致如下:

  • 您可以指定多个 --index,它们形成了包的 源列表 ,它们可以是 PyPI url 或私有存储库 url.
  • 只能指定一个--pypi-mirror
  • 如果使用 --pypi-mirror,对于源列表中的每个 PyPI 源 url,将替换为镜像 url。
  • 最后,pipenv shell 将所有源输出到 pip install,使用 --index-url--extra-index-url 选项,如果有多个源。

如果您只从 PyPI 安装,两种方法的最终效果是一样的。

在我使用 CLI 的 pipenv v2021.5.29 运行 的情况下,要替换 url 中具有私有 PyPI 地址和信用的 pip --undex-url,我应该使用 pipenv --pypi-mirror , 否则 pipenv --index 将找不到包。