簡體   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