![](/img/trans.png)
[英]In Conda environment, how to upgrade a package that is pip installed?
[英]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% 的工作,但是,当我尝试安装第二个软件包时,它无法将第一个软件包识别为已安装并失败。
我是新手,我一直在把东西扔到墙上,但我无法以这样的方式安装第一个软件包:
根据我从您的任务中了解到的,您正在使用 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.