![](/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.