2010-04-30 23 views
11

yolk -l给我的信息,我已经有114个软件包安装在我的Ubuntu 10.04。使用virtualenv蛋黄问题

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

我切换到创造新的virtualenv目录后,我迅速改变,然后再yolk -l给了我同样的114包。

这是怎么回事?

+0

在虚拟环境中安装蛋黄帮助...很奇怪。 – 2010-04-30 07:41:20

回答

18

激活一个virtualenv通过改变你的shell PATH来工作,所以virtualenv的bin /目录是第一个。这是所有它。这意味着当你运行“python”时,它会运行Python二进制文件的virtualenv副本,而不是你的全局系统python。

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

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

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

+1

这可以在每次使用引导脚本创建venv时自动完成:http://www.virtualenv.org/en/latest/#creating-your-own-bootstrap-scripts – Hollister 2011-07-26 21:51:16

+0

如果您使用的是virtualenvwrapper(它我强烈推荐),在你的postmkvirtualenv文件中添加'pip install yolk'。 http://www.doughellmann.com/docs/virtualenvwrapper/scripts.html#scripts-postmkvirtualenv – Hollister 2011-07-26 22:05:39

0

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

+1

作为替代方法,尝试'哪个蛋黄' - 如果它在(yourvirtualenv)/ bin中,然后尝试关闭您的终端并重新打开它,激活你的virtualenv并再次尝试'yolk -l'。为我修好了 – maxm 2012-06-29 09:50:37