17

假设我创建了一个名为 venv (virtualenv venv) 的 virtualenv

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

  1. . venv/bin/activate

  2. source venv/bin/activate

我认为他们都完成了同样的事情,但我不明白发生了什么。

同样对于数字 1,不是“。” 只是指当前文件夹?但如果我只输入“venv/bin/activate”而没有“.”,它就不起作用。

任何帮助都会很棒!

4

2 回答 2

25

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

该命令在当前 shell 中运行脚本的内容,这在 的情况下很重要activate,因为脚本所做的其中一件事是导出和修改当前 shell 中的环境变量。

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

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

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

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

点命令不要与点文件混淆,点文件是点前缀的隐藏文件或隐藏目录


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

使用virtualenvwrapper,只需调用以下命令即可切换到环境:

workon YOUR_ENV
于 2012-06-14T07:36:45.073 回答
4

.命令本质上是source. 它们都在当前 shell 中执行给定的脚本,而无需派生新的 shell。

这里有一些很好的例子。

于 2012-06-14T07:34:05.443 回答