繁体   English   中英

在 conda 环境中注册一个 pip 安装包

[英]Register a pip installed package in conda environment

我正在开发一个项目,他们使用 Ansible 运行多个 conda 安装。 我需要从 github 安装两个额外的包,它们的依赖项已经被现有的 conda 安装覆盖,第二个包依赖于第一个.

使用下面的 Ansible 代码,我可以在不重新安装依赖项的情况下安装第一个包。

- name: install mypackage 
    shell: /home/myname/envs/myproject/bin/pip install --install-option="--prefix=/home/myname/envs/myproject" --egg https://github.com/myname/mypackage/archive/my_branch.zip

这让我完成了 95% 的工作,但是,当我尝试安装第二个软件包时,它无法将第一个软件包识别为已安装并失败。

我是新手,我一直在把东西扔到墙上,但我无法以这样的方式安装第一个软件包:

  • 它识别现有的 conda 安装
  • 第二个包标识第一个

根据我从您的任务中了解到的,您正在使用 venv 来安装软件包,这很好。 不过,我不明白为什么您要使用 shell 模块来处理安装。这不好。 您可以使用 ansible' pip模块处理所有这些:

- name: "Install mypackage"
  pip:
    virtualenv: /home/{{ lookup('env','USER') }}/envs/myproject/
    name: "{{ item }}"
  with_items:
     - "https://github.com/myname/mypackage1/archive/my_branch.zip"
     - "https://github.com/myname/mypackage2/archive/my_branch.zip"

这应该按照您需要的顺序正确安装软件包,而不必麻烦地通过shell输出工作。

请注意,您可以将普通的 python 包与鸡蛋等混合使用。

作为virtualenv的替代方案,您可以使用executable

看看文档

我相信问题是如何在conda环境中使用 ansible 来pip install包。 请注意, 在 conda 环境中使用pip install完全可能的,这在 conda 存储库中不存在所需包并且无法使用conda install情况下特别有用。

因此,目标是使用由conda创建的环境,而不是virtualenv (顺便说一句,ansible 的 pip 模块提供了特定参数)。

我设法通过使用ansible 的 pip 模块并将pip executable指向安装在所需 conda environment 中的那个

请参阅下面的代码,注意executable变量的用法:

- name: Install pip packages WITHIN a designated conda environment
  pip:
    name: some_package_name
    executable: "/home/[username]/[anaconda3]/envs/[conda_env_name]/bin/pip"
    # ^-- Of course you will need to ensure the correct path.

这将在指定的 conda 环境中pip install包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM