11

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

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

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

那里发生了什么?

4

2 回答 2

18

通过更改 shell PATH 来激活 virtualenv,因此 virtualenv 的 bin/ 目录是第一个。这就是它所做的一切。这意味着当您运行“python”时,它会运行 virtualenv 的 Python 二进制文件副本,而不是您的全局系统 python。

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

这就是为什么将 yolk 安装到 virtualenv 中可以解决问题的原因;因为它在您的 virtualenv bin/ 目录中添加了一个 yolk 脚本,该脚本在其 shebang 行中有 virtualenv 的 python。

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

于 2010-04-30T12:47:51.520 回答
0

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

于 2010-06-21T03:09:32.553 回答