问题:virtualenv 蛋黄问题

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

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

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

那里发生了什么?

解答

通过更改 shell PATH 来激活 virtualenv,因此 virtualenv 的 bin/ 目录是第一个。这是_all_。这意味着当您运行“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,你唯一的选择就是在那里安装它。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐