可以将 conda 配置为使用私有 pypi 存储库吗?

Posted

技术标签:

【中文标题】可以将 conda 配置为使用私有 pypi 存储库吗?【英文标题】:Can conda be configured to use a private pypi repo? 【发布时间】:2021-03-30 16:01:30 【问题描述】:

我有创建 conda 和 pip 包的用户 - 我无法控制这个

我使用 artifactory 来托管私有 conda 和 pip 存储库,例如私有 pip 存储库是这样工作的:https://www.jfrog.com/confluence/display/JFROG/PyPI+Repositories

有时有一个 conda 环境或包需要的私有 pip 包。如何配置 conda 以从我的私人仓库获取我的私人 pip 包?

我还没有找到这方面的文档。我希望这对用户尽可能透明-因此他们设置了一次配置,然后在他们的 conda 环境中,他们可以轻松地指定一个私有 pip 包,它就可以工作

【问题讨论】:

【参考方案1】:

Conda 不会自动搜索 PyPI 或替代 pip 兼容索引,但在使用 pip install 时仍然可以使用 --index-url--extra-index-url 标志。例如,

临时安装

# activate environment
conda activate foo

# ensure it has `pip` installed
conda list pip

# install with `pip`
pip install --extra-index-url http://localhost:8888 bar

基于 YAML 的环境

foo.yaml

name: foo
channels:
  - defaults
dependencies:
  - python
  - pip
  - pip:
    - --extra-index-url http://localhost:8888
    - bar

环境营造

conda env create -f foo.yaml

【讨论】:

但它会读取我的 .pypirc 来获取用户名和密码,对吗?否则它如何向私人仓库进行身份验证?在 conda install/create/update/etc 期间,我是否必须手动 pip install 或者 conda 会从 pypirc 获取我的凭据? @red888 as per docs,看起来您可以使用.netrc 文件、密钥环,或者只是将凭据放在 URL 中。 在配置私有 pypi 存储库的 jfrog 文档中没有出现的有趣。所以对于 conda 我需要使用 netrc 因为它忽略了 pypirc? @red888 不确定。 TBH,我从未使用过.pypirc; docs seem to indicate 仅用于上传到存储库,在这种情况下不是 Conda 忽略它,而是 pip 不使用它。 如何在 meta.yaml 中指定 --extra-index-url

以上是关于可以将 conda 配置为使用私有 pypi 存储库吗?的主要内容,如果未能解决你的问题,请参考以下文章

pip.conf 中用于私有 PyPI 的凭据

如何克隆 PyPI 存储库并作为本地存储库维护

如何托管我自己的私有 conda 存储库?

9.使用nexus3配置Python私有仓库

conda 是不是从使用 pip install 安装的 pypi 更新软件包?

conda 中配置 jupyter notebook 环境 踩过的坑