【发布时间】:2018-08-30 20:38:27
【问题描述】:
我想知道“cd”直接到虚拟环境是否与采购虚拟环境相同。也就是说,
source <venv_name>/bin/activatecd <venv_name>/bin/
(1)和(2)一样吗?即,所有可见的 (1) 是否也在 (2) 中可见?
【问题讨论】:
标签: linux python-3.x virtualenv
我想知道“cd”直接到虚拟环境是否与采购虚拟环境相同。也就是说,
source <venv_name>/bin/activatecd <venv_name>/bin/(1)和(2)一样吗?即,所有可见的 (1) 是否也在 (2) 中可见?
【问题讨论】:
标签: linux python-3.x virtualenv
这不是一回事。
source <venv_name>/bin/activate这会改变站点包的解析位置。它通过一个非常简单的技巧来实现这一点:在环境变量 ($PATH) 上添加 venv 的 bin 目录,这会影响 python 命令的解析位置。
cd <venv_name>/bin/将目录更改为<venv_name>/bin 将不会使安装在venv(位于../lib)中的软件包可用于导入。命令python 仍将解析为/usr/local/bin/python(或您的系统python 解释器所在的任何位置),并且解释器仍将使用系统站点包。你不会看到 venv 的库。
在你的 virtualenv 内外检查python -m site 的输出,看看有什么不同。
【讨论】:
. <venv_nam>/bin/activate。或者直接执行venv python:./<venv_name>/bin/python.
/path/to/<venv_name>/bin/python。然后 venv 包将可供导入。
(1) 和 (2) 一样吗?即,所有可见的 (1) 是否也在 (2) 中可见?
没有。这两个命令做完全不同的事情。
虚拟环境不是您可以“进入”的“事物”。当您获取虚拟环境激活脚本时,它几乎唯一要做的就是设置一些环境变量。
如果您不想运行激活脚本,您可以手动设置这些变量。但是,您不能使用cd 命令来执行此操作。
【讨论】:
PYTHONPATH。只需查看脚本,您就可以确切地看到它的作用。