我必须激活虚拟环境(venv),所以我必须在终端中手动运行以下命令:
source .venv/bin/activate # To activate the virtual env.
和
deactivate # To deactivate the virtual env
这在手动运行时可以正常工作。现在,我必须在bash脚本中插入这些命令,以使AWS CodeDeploy可以将其部署在Ubuntu 18.04服务器上。
我的名为after_install.sh
的bash脚本看起来像这样...
#!/usr/bin/env bash
set -e
source .venv/bin/activate
## DO SOME STUFF ##
deactivate
对于本地测试,我使脚本可执行,并使用bash after_install.sh
运行了脚本。但是什么也没发生。它不会激活虚拟环境。在运行bash脚本时,上述命令似乎均无效。
我不明白为什么当我手动运行这些命令但不使用bash脚本运行这些命令时为何起作用。到底是怎么回事?我需要在bash脚本中编写这些命令,以便AWS CodeDeploy可以将其部署在服务器上。
答案 0 :(得分:0)
在这种情况下,请勿依赖activate
。在脚本之外执行source activate
,然后检查PATH
。复制PATH
的值,然后在脚本中将操作路径设置为复制的值:
#!/usr/bin/env bash
setenv PATH='copied_value_of_path'
# do stuff
在这一点上,我必须假设您将在“ DO SOME STUFF”部分中运行一个或多个python脚本。编辑脚本,并确保您具有以下内容:
#!/bin/env python
作为每个脚本的第一行。这是Shell脚本约定,用于让Shell知道要为此脚本使用哪个解释器。