Добавление общих пакетов Python для нескольких виртуальных
-
02-10-2019 - |
Вопрос
Текущий рабочий процесс 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 еще там), кажется, всегда далеко перевешивают дисковое пространство, если вы заняты развивающимся, вы Никогда - в моем опыте - даже заметить все равно.
Так что я думаю, это урок, который я предлагаю с собственного опыта: вы никогда не заметите, что именно дисковое пространство вы потеряли, но вы будем Обратите внимание на его, если попытка очистить каталог в одном месте на диске, разбивает проекты в разделе «Разработка где-то еще».