virtualenv蛋黄问题

Szy*_*ski 11 python virtualenv yolk

yolk -l给我的信息是我在Ubuntu 10.04上安装了114个软件包.使用后创建新的virtualenv目录

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

我切换到那个,我的提示改变了,然后yolk -l又给了我相同的114个包.

那里发生了什么?

Car*_*yer 18

激活virtualenv可以通过更改shell PATH来实现,因此virtualenv的bin /目录是第一个.这就是它的全部.这意味着当你运行"python"时,它运行virtualenv的Python二进制文件的副本,而不是你的全局系统python.

但是,如果全局安装了yolk,则PATH上唯一的"yolk"二进制文件是/ usr/local/bin/yolk或其他一些; 激活virtualenv不会改变这一点(因为你的virtualenv bin/dir中没有"蛋黄"脚本).而/ usr/local/bin/yolk脚本自然会在其shebang行中使用您的系统Python解释器.

这就是为什么在virtualenv中安装yolk可以解决问题; 因为它在你的virtualenv bin/dir中添加了一个蛋黄脚本,在其shebang行中有virtualenv的python.

如果您不想在每个virtualenv中安装yolk,您也可以只将/ yrk脚本包装器从/ usr/local/bin或其中的任何位置复制到virtualenv的bin目录中,并手动更改shebang行以指向您的virtualenv的蟒蛇.但是,这不适用于--no-site-packages virtualenv,因为脚本包装器将无法找到它需要导入的实际yolk包!如果你想在--no-site-packages virtualenv中使用yolk,你真正唯一的选择是在那里安装它.