2014-11-06 2 views
0

Предположим, у меня есть два отдельных докеровских (или некоторых других) контейнера, которые могут обмениваться папками друг с другом. В обоих этих контейнерах есть интерпретатор Python той же версии. Есть ли способ заставить этих переводчиков делиться почти одним и тем же PYTHONPATH, например. для обоих из них видят все пакеты, установленные в любом из этих контейнеров?Два контейнера - два Pythons - один сайт-пакет?

Я знаю, что могу просто импортировать пакеты из папки, но я хочу сделать выяснить, если это возможно, чтобы сделать такие шаги:

  1. Установите пакет А в первом контейнере с пип или easy_install. Этот пакет может зависеть от других пакетов, которые расположены во втором контейнере и как-то монтируются на первый. Кроме того, существуют некоторые возможные зависимости (второй контейнер отсутствует), которые будут установлены в первый контейнер.
  2. Внутренний контейнер для импорта второго контейнера A из первого контейнера без проблем, поэтому он должен видеть обе зависимости, расположенные в первом и втором контейнерах.

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

+0

Я думаю, что вы ищете ['basket'] (http: // pythonhosted .org // Basket /) –

ответ

0

Я не знаю, понял ли я вопрос. Если это не ответит на ваш вопрос, можете ли вы прокомментировать? Мне было как три вопроса вы спрашивали:

  1. поведение импорта (я ответил ниже)
  2. Обновление пакетов
  3. стивидорных - по желанию или нет, попробовать или требование?

Импорт Поведение

Существует список называется sys.path. Это список папок, в которых python ищет пакеты. Предположим, у вас есть folder1 и folder2 в этом списке.

folder1 
    +----- module_a 
    +----- module_b 

folder2 
    +----- module_a 
    +----- module_c 
процесс

Python, с ['folder1', 'folder2', ...], как sys.path бы сделать это:

import module_a # from folder1 
import module_b # from folder1 
import module_C# from folder2 
процесс

Python, с ['folder2', 'folder1', ...], как sys.path бы сделать:

import module_a # from folder2 # difference 
import module_b # from folder1 
import module_C# from folder2 

Это, как я понимаю, Python импорт. Я не использую докер или PYTHONPATH, поэтому я не могу на это ссылаться.

0

У вас может быть контейнер, точка входа которого создает виртуальный поток в томе и устанавливает все зависимости, определенные в файле требований. Затем вы можете использовать флаг --volumes-from для монтирования виртуального env в других контейнерах и выполнить сценарий активации для импорта среды.