Добавление общих пакетов Python для нескольких virtualenv - PullRequest
9 голосов
/ 12 сентября 2010

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

У меня * Python pip , распространено , virtualenv и virtualenvwrapper установлено2.7 site-пакеты ( фреймворк 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?

Я пытался использовать 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, который позволяет нескольким virtualenv ссылаться на один пакет Python, который не установлен в моих пакетах сайтов Python 2.7?
  • Вопрос# 3 Если существует способ установки общего пакета Python в несколько virtualenv, есть ли снижение производительности, которое не существует по сравнению с установкой пакетов Python отдельно в каждый virtualenv?
  • Вопрос# 4 Должен ли я просто отказаться от экономии места на диске и придерживаться текущего рабочего процесса?

1 Ответ

11 голосов
/ 12 сентября 2010

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

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

...