Cd 到虚拟环境而不是采购它
Cd to virtual environment instead of sourcing it
我想知道 'cd' 直接进入虚拟环境是否与采购虚拟环境是一回事。也就是说,
source <venv_name>/bin/activate
cd <venv_name>/bin/
(1)和(2)一样吗?即,所有可见的东西 (1) 在 (2) 中是否也可见?
这不是一回事。
source <venv_name>/bin/activate
这会更改站点包的解析位置。它通过一个非常简单的 hack 来实现这一点:在环境变量 ($PATH) 上添加 venv 的 bin 目录,这会影响 python
命令解析的位置。
cd <venv_name>/bin/
将目录更改为 <venv_name>/bin
将 不会 使安装在 venv
(位于 ../lib
)中的软件包可用于导入.命令 python
仍将解析为 /usr/local/bin/python
(或系统 python 解释器所在的任何位置)并且解释器仍将使用系统站点包。您不会看到 venv 的库。
检查 virtualenv 内部和外部 python -m site
的输出以查看差异。
Is (1) the same as (2)? I.e., is everything visible (1) also visible in (2)?
没有。这两个命令做完全不同的事情。
虚拟环境不是您可以 "go in" 的 "thing"。当您获取虚拟环境激活脚本时,几乎唯一要做的就是设置一些环境变量。
如果您不想运行激活脚本,您可以手动设置这些变量。但是,您不能使用 cd
命令来完成此操作。
我想知道 'cd' 直接进入虚拟环境是否与采购虚拟环境是一回事。也就是说,
source <venv_name>/bin/activate
cd <venv_name>/bin/
(1)和(2)一样吗?即,所有可见的东西 (1) 在 (2) 中是否也可见?
这不是一回事。
source <venv_name>/bin/activate
这会更改站点包的解析位置。它通过一个非常简单的 hack 来实现这一点:在环境变量 ($PATH) 上添加 venv 的 bin 目录,这会影响 python
命令解析的位置。
cd <venv_name>/bin/
将目录更改为 <venv_name>/bin
将 不会 使安装在 venv
(位于 ../lib
)中的软件包可用于导入.命令 python
仍将解析为 /usr/local/bin/python
(或系统 python 解释器所在的任何位置)并且解释器仍将使用系统站点包。您不会看到 venv 的库。
检查 virtualenv 内部和外部 python -m site
的输出以查看差异。
Is (1) the same as (2)? I.e., is everything visible (1) also visible in (2)?
没有。这两个命令做完全不同的事情。
虚拟环境不是您可以 "go in" 的 "thing"。当您获取虚拟环境激活脚本时,几乎唯一要做的就是设置一些环境变量。
如果您不想运行激活脚本,您可以手动设置这些变量。但是,您不能使用 cd
命令来完成此操作。