Heu*_*yie 10 command-line bash scripts virtualenv
我阅读了类似的问题并尝试了他们的建议,但我仍然无法激活我的虚拟环境。目录的层次结构是:
myproject
-- virtualenv
-- startvenv.sh
Run Code Online (Sandbox Code Playgroud)
startvenv.sh 是:
#!/bin/bash
source virtualenv/bin/activate
Run Code Online (Sandbox Code Playgroud)
而且,我通过以下方式运行 startvenv.sh:
./startvenv.sh
Run Code Online (Sandbox Code Playgroud)
没有错误,但没有任何反应。为什么?理想情况下,我想打开一个新终端并在那里激活我的虚拟环境。
Byt*_*der 11
virtualenv 通过获取(通常不运行)virtualenv/bin/activate脚本来激活。如果您想在自己的脚本中执行此操作,那么您还必须获取该脚本的源代码,而不仅仅是运行它。意义:
source startvenv.sh
Run Code Online (Sandbox Code Playgroud)
运行和采购之间的区别在于,运行在其自己单独的子外壳中执行脚本,该子外壳与父外壳(您从中调用它的那个)隔离,以便例如环境变量和脚本内部的其他更改不会传播到父母。
Sourcing 明确地做到了这一点,在您当前的shell 中执行脚本,这使得对环境变量等的所有更改在完成后保持不变。
这是man bash(关于 Shell Builtins 的部分)的简短摘录:
source startvenv.sh
Run Code Online (Sandbox Code Playgroud)