virtualenv yolk 问题

11 投票
2 回答
2728 浏览
提问于 2025-04-15 22:11

我用 yolk -l 命令查看,发现我的 Ubuntu 10.04 上安装了 114 个软件包。然后我用

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

创建了一个新的虚拟环境,切换到这个环境后,命令提示符也变了。可是当我再次用 yolk -l 查看时,还是显示那 114 个软件包。

这是怎么回事呢?

2 个回答

0

如果问题不是跟你的路径有关(我猜是),那么就把你项目目录里的lib和scripts文件夹删掉,这样可以清除虚拟环境的设置。然后用你之前发的命令重新创建虚拟环境。接着激活这个虚拟环境,然后安装yolk。

18

激活一个虚拟环境(virtualenv)其实就是在你的命令行中改变一个叫做 PATH 的设置,让虚拟环境的 bin/ 目录排在最前面。简单来说,就是这样做的。这意味着当你输入“python”时,它会运行虚拟环境里的 Python,而不是你电脑上全局安装的 Python。

不过,如果你全局安装了 yolk,那么在你的 PATH 中唯一的“yolk”程序就是 /usr/local/bin/yolk 或类似的路径;激活虚拟环境并不会改变这一点(因为在你的虚拟环境的 bin/ 目录里没有“yolk”这个脚本)。而 /usr/local/bin/yolk 脚本自然是指向你系统中的 Python 解释器。

所以,把 yolk 安装到虚拟环境中就能解决这个问题;因为这样会在你的虚拟环境的 bin/ 目录里添加一个 yolk 脚本,这个脚本的指向是虚拟环境里的 Python。

如果你不想在每个虚拟环境中都安装 yolk,你也可以把 /usr/local/bin 里的 yolk 脚本复制到你的虚拟环境的 bin 目录里,然后手动修改这个脚本的指向,让它指向虚拟环境里的 Python。不过,如果你使用的是 --no-site-packages 的虚拟环境,这种方法就行不通了,因为脚本就找不到它需要导入的 yolk 包!如果你想在 --no-site-packages 的虚拟环境中使用 yolk,唯一的选择就是在那个环境里安装它。

撰写回答