Добавление общих пакетов Python в несколько виртуальных машин

Текущий рабочий процесс Python

У меня есть pip , distribute , virtualenv , и virtualenvwrapper , установленный в мои пакеты сайтов Python 2.7 ( фреймворк Python, установленный в Mac OS X ). В моем ~ / .bash_profile у меня есть строка

export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache

Это дает следующий рабочий процесс:

$ mkvirtualenv pip-test
$ pip install nose        # downloaded and installed from PyPi
$ pip install mock        # downloaded and installed from PyPi
$ mkvirtualenv pip-test2
$ pip install nose        # installed from pip's download cache
$ pip install mock        # installed from pip's download cache

Вопросы

Поскольку я не загружаю пакеты, которые были ранее установлены в другом virtualenv, это рабочий процесс экономит время и пропускную способность. Однако это не экономит место на диске, поскольку каждый пакет будет установлен в каждый virtualenv. Поэтому мне интересно:

  • Вопрос № 1 Есть ли модификация этого рабочего процесса, которая позволила бы мне сэкономить дисковое пространство за счет того, что несколько virtualenvs ссылаются на один пакет Python, который не установлен в мои пакеты сайта Python 2.7?

I ' Мы пробовали использовать add2virtualenv , который является частью virtualenvwrapper. Хотя это «добавляет указанные каталоги к пути Python для активного в настоящий момент virtualenv», оно не добавляет никаких исполняемых файлов, находящихся в каталоге virtualenv / bin . Таким образом, следующее не будет выполнено:

$ mkvirtualenv pip-test3
$ add2virtualenv ~/.virtualenvs/pip-test/lib/python2.7/site-packages/nose/
$ nosetests   # Fails since missing ~/.virtualenvs/pip-test3/bin/nosetests
  • Вопрос № 2 Я что-то упустил в том, как работает add2virtualenv ?
  • Вопрос № 1 перефразирован Есть ли лучший метод, чем add2virtualenv, который позволяет нескольким виртуальным серверам ссылаться на один пакет Python, который не установлен в моих пакетах сайта Python 2.7?
  • Вопрос № 3 Если существует способ установки общего пакета Python в несколько виртуальных пакетов, есть ли штраф за производительность, который не? Что, по сравнению с установкой пакетов Python отдельно в каждый виртуальный сервер?
  • Вопрос № 4 Должен ли я просто отказаться от экономии места на диске и придерживаться моего текущего рабочего процесса?
9
задан Matthew Rankin 11 September 2010 в 21:54
поделиться