这是关于我收到的回复的内容,其中提到我需要在脚本中加入source以激活virtualenv。
作为一个初学者,我不知道这意味着什么,我正在努力理解virtualenv。
. myscript.sh
或:source myscript.sh
(取决于您正在使用的shell)。
如果您在自己的shell中运行脚本,则对环境所做的任何更改都是在“该”shell中而不是您从中调用它的shell中进行的。通过源化它,您可以影响当前shell的环境。
例如,查看以下转录:
pax> cat script.sh
export xyzzy=plugh
echo $xyzzy
pax> export xyzzy=twisty
pax> echo $xyzzy ; script.sh ; echo $xyzzy
twisty
plugh
twisty
pax> echo $xyzzy ; . script.sh ; echo $xyzzy
twisty
plugh
plugh
当你在不同的shell中运行脚本时,它将xyzzy
设置为plugh
,但当shell返回到你原来的shell时,这个设置就会丢失。你会发现原始值已经被“恢复”(用引号括起来是因为原始值实际上从未被改变,只是它的一个副本被改变了)。source
是 Bash 的特性,因此这个模式并不是真正可移植的。 - Burhan Khalidbash
的机器了 :-) - paxdiablo
virtualenvwrapper
脚本使得与虚拟环境的工作变得更加容易。你可以通过workon my_project
来代替source /my_project/bin/activate
。 - Burhan Khalid