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

StackOverflow https://stackoverflow.com/questions/3692632

Вопрос

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

У меня есть пипс, распределять, виртуаль, и VirtualenVwrapper установлен в мой Python 2.7 сайта-пакеты (A Framework 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, этот рабочий процесс экономит время и пропускную способность. Тем не менее, он не сохраняет дисковое пространство, поскольку каждый пакет будет установлен в каждый виртуальн. Поэтому мне интересно:

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

Я пытался использовать 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. Должен ли я просто отказаться от сохранения дискового пространства и придерживаться своего текущего рабочего процесса?
Это было полезно?

Решение

Если вы не делаете разработку в встроенной системе, я обнаруживаю, что преследование дискового пространства таким образом всегда является контрпродуктивным. Мне потребовалось много времени, чтобы добраться до этой реализации, потому что я вырос, когда очень большой жесткий диск был несколько мегабайт по размеру, и ОЗУ измеряли в К. Но сегодня, если вы не очень особые и необычные ограничения, выгоду Для того, чтобы ваши проекты были ортогональными (вы можете удалить любые каталоги в вашей системе в любой точке за пределами вашего проекта, и по-прежнему там пакеты Python еще там), кажется, всегда далеко перевешивают дисковое пространство, если вы заняты развивающимся, вы Никогда - в моем опыте - даже заметить все равно.

Так что я думаю, это урок, который я предлагаю с собственного опыта: вы никогда не заметите, что именно дисковое пространство вы потеряли, но вы будем Обратите внимание на его, если попытка очистить каталог в одном месте на диске, разбивает проекты в разделе «Разработка где-то еще».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top