我想知道直接将CD导入虚拟环境是否与采购虚拟环境相同?也就是说,
source <venv_name>/bin/activate
cd <venv_name>/bin/
(1)是否等于(2)?即,所有可见的(1)在(2)中是否也可见?
答案 0 :(得分:2)
这不是一回事。
source <venv_name>/bin/activate
这更改了站点包的解析位置。它是通过一个非常简单的技巧来实现这一点的:将venv的bin目录放在环境变量($ PATH)之前,这会影响python
命令的解析位置。
cd <venv_name>/bin/
将目录更改为<venv_name>/bin
不会不会使导入在venv
中的软件包(位于../lib
中)可以导入。命令python
仍将解析为/usr/local/bin/python
(或系统python解释器所在的任何位置),并且该解释器仍将使用系统站点软件包。您不会看到venv的资料库。
在您的virtualenv内外检查python -m site
的输出,以查看区别。
答案 1 :(得分:1)
(1)是否等于(2)?即,所有可见的(1)在(2)中是否也可见?
不。这两个命令执行完全不同的操作。
虚拟环境不是您可以“进入”的“事物”。当您获取虚拟环境激活脚本时,几乎唯一要做的就是设置一些环境变量。
如果您不想运行激活脚本,则可以手动设置这些变量。但是,您无法使用cd
命令来执行此操作。