2016-04-22 2 views
0

Я работаю над проектом, в котором они используют Ansible для запуска нескольких установок conda. Мне нужно установить два дополнительных пакета из github, которые имеют зависимости, которые уже покрыты существующими установками conda , причем второй пакет имеет зависимость от первого.Зарегистрировать пакет, установленный в среде conda

Используя приведенный ниже код, я могу установить первый пакет без переустановки зависимостей.

- 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 для установки пакетов, это хорошо. Я не понимаю, почему, однако, вы используете оболочный модуль для обработки установки. Это нехорошо. Вы можете обрабатывать все это с анзиблем»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 выход.

Обратите внимание, что вы можете смешать обычные пакеты питона с яйцами и т.д ..

В качестве альтернативы virtualenv вы можете использовать executable.

Посмотрите на docs

+0

Это выглядит потрясающе. Я, по общему признанию, понятия не имею, что я делаю, и я подражаю тому, что делали другие люди. Позвольте мне попробовать это, но я собираюсь принять его сейчас. – Chris

+0

Мне будет очень грустно, если это не сработает .. :(Вы могли бы вставить любую ошибку, из которой выйдет ошибка, хотя это может быть не связано с ansible – shaps

+0

'msg: [Errno 13] Permission denied'. Также {{ item}} необходимо было обернуть в кавычки (сообщение об ошибке Ansible было потрясающе хорошо написано кстати). Редактировал бы себя, но для меня должно было быть как минимум 6 символов для меня. – Chris

Смежные вопросы