Ответ 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, действительно ваш единственный выбор - установить его там.