Установка определенных пакетов с помощью virtualenv - PullRequest
2 голосов
/ 12 января 2009

Итак, я хочу начать использовать virtualenv в этом году. Мне нравится опция no-site-packages, это приятно. Однако мне было интересно, как установить определенные пакеты в каждом virtualenv. Например, допустим, я хочу установить django в каждое приложение virtualenv ... возможно ли это, и если да, то как? Решение buildout решает эту проблему?


Ну, это не столько django, сколько приложения django ... Я не против установить версию django в каждое virtualenv ... Мне просто интересно, есть ли какой-нибудь промежуточный вариант для no-site-packages

Ответы [ 5 ]

6 голосов
/ 27 января 2009

Я знаю, откуда вы, с опцией no-sites-option. Я хочу использовать pip freeze для создания списков требований и не хочу много лишних усилий в пакетах сайтов. Мне также нужно использовать несколько версий django, так как у меня есть устаревшие проекты, которые я не обновил (некоторые старые проверки svn (pre1.0), некоторые 1.0 и некоторые новые проверки svn). Установка Django в глобальных пакетах сайта на самом деле не вариант.

Вместо этого у меня есть папка django с выпусками и парой разных версий svn и просто символическая ссылка на соответствующую версию в локальных пакетах сайта. Для простоты использования я делаю ссылки на локальные пакеты сайта на том же уровне, что и окружение, а затем делаю ссылку в соответствующем каталоге django и любых других нужных мне пакетах системного стиля (обычно это просто PIL). Итак:

$ virtualenv pyenv
$ ln -s ./pyenv/lib/python2.5/site-packages ./installed
$ ln -s /usr/lib/python2.5/site-packages/PIL ./installed
$ ln -s /opt/django/django1.0svn/trunk/django ./installed

Теперь работают следующие:

$ source pyenv/bin/activate
$ python
> import django
> import PIL
2 голосов
/ 12 января 2009

Если вы хотите, чтобы django был установлен на КАЖДОМ virtualenv, вы могли бы также установить его в каталог site-packages? Просто мысль.

1 голос
/ 14 января 2009

Я бы предложил использовать поддержку virtualenv bootstrapping . Это позволяет выполнять произвольный Python после создания virtualenv, например устанавливать новые пакеты.

0 голосов
/ 14 января 2009

Я хочу проверить этот проект:

http://www.stereoplex.com/two-voices/fez-djangoskel-django-projects-and-apps-as-eggs

Может быть, мой ответ ....

0 голосов
/ 12 января 2009

Другой вариант (который я использовал) - это просто установить Django после того, как вы создали виртуальную среду. Это легко в сценарии. Штраф, который вы платите, ожидает установки Django в каждой из ваших виртуальных сред.

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

...