Python 虚拟蛋黄问题

Python 虚拟蛋黄问题,python,virtualenv,yolk,Python,Virtualenv,Yolk,yolk-l告诉我,我的Ubuntu 10.04上安装了114个软件包。使用创建新的virtualenv目录后 virtualenv virt_env/virt1--无站点包--清除 我切换到那个,我的提示改变了,然后yolk-l再次给我同样的114个包 这是怎么回事?激活virtualenv的方法是更改shell路径,使virtualenv的bin/目录位于第一位。这就是它的全部功能。这意味着当您运行“python”时,它将运行virtualenv的python二进制文件副本,而不是您的全局系

yolk-l
告诉我,我的Ubuntu 10.04上安装了114个软件包。使用创建新的virtualenv目录后

virtualenv virt_env/virt1--无站点包--清除

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


这是怎么回事?

激活virtualenv的方法是更改shell路径,使virtualenv的bin/目录位于第一位。这就是它的全部功能。这意味着当您运行“python”时,它将运行virtualenv的python二进制文件副本,而不是您的全局系统python

但是,如果您在全球安装了yolk,那么路径上唯一的“yolk”二进制文件是/usr/local/bin/yolk或类似文件;激活virtualenv不会改变这一点(因为virtualenv bin/dir中没有“蛋黄”脚本)。而/usr/local/bin/yolk脚本自然会在其shebang行中包含您的系统Python解释器

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


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

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

在虚拟环境中安装yolk有助于。。。非常奇怪。每次使用引导脚本创建venv时,都可以自动执行此操作:如果您使用的是VirtualEnvrapper(我强烈推荐),请将
pip install yolk
添加到您的postKVirtualenv文件中。或者,试试“哪个蛋黄”——如果它在(你的virtualenv)/bin中,那么试着关闭你的终端并重新打开它,激活你的virtualenv并再试一次“蛋黄-l”。帮我修好了