Подтвердить что ты не робот

Проблема с виртуальным вирусом

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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