2016-04-22 194 views
0

我正在使用Ansible運行多個conda安裝的項目。我需要從github安裝兩個附加軟件包,這些軟件包具有現有conda安裝已經涵蓋的依賴項,而第二個軟件包依賴於第一個在conda環境中註冊pip安裝包

使用下面的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%存在,但是,當我嘗試安裝第二個包,爲已安裝和失敗,不承認第一個包。

我是新來這和我一直在扔東西靠在牆上,但在那裏我不能以這樣的方式來安裝第一包:

  • 它承認現有的暢達安裝
  • 第二個包標識第一個包
+0

我也對標題提出建議。我不喜歡這個,但想不到任何更好的... – Chris

回答

2

從我能理解你的任務你使用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

+0

這看起來很棒。我承認我不知道自己在做什麼,並且正在效仿別人的做法。讓我試試看,但我現在要接受它。 – Chris

+0

如果這不起作用,我會感到非常難過。:(你可以粘貼任何錯誤點出來,但它可能不會與可信 – shaps

+0

'msg:[Errno 13] Permission denied'有關。另外,{{ item}}需要用引號包起來(Ansible的錯誤信息很好地寫在btw中)。我自己編輯過,但它至少需要6個字符才能編輯。 – Chris

相關問題