代码之家  ›  专栏  ›  技术社区  ›  Szymon Lipiński

虚拟蛋黄问题

  •  11
  • Szymon Lipiński  · 技术社区  · 16 年前

    yolk -l 告诉我在我的ubuntu10.04上安装了114个软件包。在使用创建新的virtualenv目录之后

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

    我换了那个,我的提示变了,然后 蛋黄-l

    那是怎么回事?

    2 回复  |  直到 16 年前
        1
  •  18
  •   Carl Meyer    16 年前

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

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

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

    如果不想在每个virtualenv中安装yolk,还可以将yolk脚本包装器从/usr/local/bin或任何地方复制到virtualenv的bin dir中,然后手动更改shebang行以指向virtualenv的python。不过,这对于一个没有站点包的virtualenv来说是行不通的,因为这样脚本包装器就找不到需要导入的实际蛋黄包了!如果您想在一个没有站点的virtualenv包中使用yolk,实际上您唯一的选择就是在那里安装它。

        2
  •  0
  •   Mark Stahler    16 年前