在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
。
看看 docs
我认为问题是如何在 conda
环境中对 pip install
包使用 ansible。请注意它是 perfectly possible to use pip install
within a conda environment,这在 conda 存储库中不存在所需软件包且无法使用 conda install
.
安装的情况下特别有用
因此,目标是使用由 conda
创建的环境,而 而不是 virtualenv
(顺便说一句,ansible 的 pip 模块为此提供了特定的参数)。
我已经通过使用 ansible's pip module 和 将 pip executable
指向安装在所需 conda 环境中的 pip .
参见下面的代码,注意 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.
这将pip install
指定conda环境中的包。
我正在开发一个项目,他们使用 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
。
看看 docs
我认为问题是如何在 conda
环境中对 pip install
包使用 ansible。请注意它是 perfectly possible to use pip install
within a conda environment,这在 conda 存储库中不存在所需软件包且无法使用 conda install
.
因此,目标是使用由 conda
创建的环境,而 而不是 virtualenv
(顺便说一句,ansible 的 pip 模块为此提供了特定的参数)。
我已经通过使用 ansible's pip module 和 将 pip executable
指向安装在所需 conda 环境中的 pip .
参见下面的代码,注意 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.
这将pip install
指定conda环境中的包。