之间的差异。 venv/bin/activate 和./venv/bin/activate

Difference Between . venv/bin/activate and ./venv/bin/activate

全部

我对 运行 shell 脚本的格式有疑问 我遇到这个问题是我设置了一个虚拟环境

但是当我输入

. venv/bin/activate

代码没有问题 运行 successfully.But 我知道 运行 的另一种方法

 ./venv/bin/activate

bash 提示一个错误,说我没有权限这样做。

我不知道它们之间有什么区别,任何帮助将不胜感激

virtualenv 创建的 activate 脚本实际上并不是执行任何东西的标准脚本,但它是为现有 bash 会话定义更多环境变量的东西。请注意该文件中的注释:

# This file must be used with "source bin/activate" *from bash*
# you cannot run it directly

. venv/bin/activate实际上是sourcevenv/bin/activate的同义词。从本质上讲,virtualenv 所做的是在 current shell 中执行一些语句(将文件内容采购到这里),而不是开始一个新的 shell 就像执行二进制文件一样处理(即 ./venv/bin/python)。