virtualenv蛋黄问题

时间:2010-04-30 07:37:46

标签: python virtualenv yolk

yolk -l向我提供了有关我在Ubuntu 10.04上安装了114个软件包的信息。使用

创建新的virtualenv目录后

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

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

那里发生了什么?

2 个答案:

答案 0 :(得分: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脚本自然就有了你的系统Python解释器。

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

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

答案 1 :(得分:0)

如果问题与您的路径无关(我想是这样),请删除项目目录中的lib和scripts文件夹,以清除virtualenv设置。使用您发布的命令行重新创建虚拟环境。激活virtualenv,然后安装yolk。