Virtualenv“.venv / bin / activate”vs“source venv / bin / activate”

时间:2012-06-14 06:27:52

标签: python virtualenv

让我说我创造了一个名为venv(virtualenv venv)的虚拟玩家

从阅读教程中,我读到有两种激活虚拟环境的方法:

  1. . venv/bin/activate

  2. source venv/bin/activate

  3. 我认为他们都完成了同样的事情,但我不明白最新情况。

    同样对于数字1,不是“。”只是意味着当前的文件夹?但如果我只输入“venv / bin / activate”而没有“。”

    ,它就无法工作

    任何帮助都会很棒!

2 个答案:

答案 0 :(得分:21)

.source执行完全相同的操作,唯一的区别是虽然source更具可读性,但它可能并非在所有shell中都可用。

该命令在当前shell中运行脚本的内容,这在activate的情况下很重要,因为脚本执行的操作之一是导出并修改当前shell中的环境变量。

如果您使用./path/to/activate运行它,脚本将在子shell中运行,并且一旦脚本完成并且子shell终止,所有设置的环境变量都将丢失。

  

同样对于数字1,不是“。”只是指当前文件夹?

.具有不同的含义,具体取决于上下文。当用作(或部分)路径时,它仅表示“当前文件夹”。

来自http://en.wikipedia.org/wiki/Dot_%28Unix%29

  

不要将dot命令与dot file, which is a dot-prefixed hidden file or hidden directory混淆。


顺便说一句,我建议您查看virtualenvwrapper,它提供了额外的包装命令,使virtualenv更容易使用。

使用virtualenvwrapper,只需调用:

即可切换到环境
workon YOUR_ENV

答案 1 :(得分:4)

.命令本质上是source的别名。它们都在当前shell中执行给定的脚本而不需要新的shell。

Here是一些不错的例子。