2010-04-30 6 views
11

yolk -l дает мне информацию, что у меня есть 114 пакетов, установленных на моем Ubuntu 10.04. После создания нового каталога virtualenv с помощьюvirtualenv yolk problem

virtualenv virt_env/virt1 --no-site-packages --clear

я переключился на что, моя изменилась подсказка, а затем yolk -l дает мне снова те же 114 пакетов.

Что там происходит?

+0

Установка желтка в виртуальной среде помогла ... довольно странно. –

ответ

18

Активация работы virtualenv путем изменения оболочки PATH, так что виртуальный каталог bin/является первым. Это все. Это означает, что при запуске «python» он запускает копию виртуального виртуального двоичного файла Python вместо вашей глобальной системы python.

Если у вас есть желток, установленный во всем мире, однако, единственный «желток» на вашем PATH - это/usr/local/bin/yolk или некоторые такие; активация virtualenv не изменяет этого (потому что в вашем виртуальном каталоге bin/dir нет скрипта «желток»). И сценарий/usr/local/bin/yolk, естественно, имеет ваш интерпретатор системы Python в своей строке shebang.

Именно поэтому установка желтка в virtualenv устраняет проблему; потому что он добавляет скрипт желтка в ваш виртуальный bin/dir, у которого есть питон virtualenv в своей строке shebang.

Если вы не хотите устанавливать желток в каждом виртуальном пространстве, вы также можете просто скопировать оболочку скрипта желтка из/usr/local/bin или где бы он ни находился в вашем каталоге bin вашего виртуального сервера и вручную изменить линию shebang чтобы указать на ваш python virtualenv. Однако это не будет работать с виртуальными виртуальными серверами --no-site-packages, потому что оболочка сценария не сможет найти реальные пакеты yolk, которые необходимо им импортировать! Если вы хотите использовать желток в виртуальном виртуальном каталоге --no-site-packages, действительно ваш единственный выбор - установить его там.

+1

Это можно сделать автоматически каждый раз, когда вы создаете venv с помощью сценария начальной загрузки: http://www.virtualenv.org/en/latest/#creating-your-own-bootstrap-scripts – Hollister

+0

Если вы используете virtualenvwrapper (который Я настоятельно рекомендую), добавьте 'pip install yolk' в ваш файл postmkvirtualenv. http://www.doughellmann.com/docs/virtualenvwrapper/scripts.html#scripts-postmkvirtualenv – Hollister

0

Если проблема не связана с вашим путем (я полагаю, это), удалите папку lib и scripts в каталоге проекта, чтобы очистить настройки virtualenv. Создайте виртуальную среду с помощью командной строки, которую вы опубликовали. Активируйте virtualenv, а затем установите желток.

+1

В качестве альтернативы попробуйте «какой желток» - если он находится в вашей виртуализации/bin, попробуйте закрыть терминал и снова открыть его, активируя ваш virtualenv и попробуйте «yolk -l» еще раз. Исправлено для меня – maxm