我试图创建一个bash脚本来激活virtualenv,pip安装要求.txt然后继续。这是我的初始值为以后的业务编写脚本。在
#!/usr/bin/env bash
set -euo pipefail
. ${DIR}/scripts-venv/bin/activate
pip install -r requirements.txt
其中${DIR}设置为包含virtualenv的我的目录。问题似乎出在上面的set -euo
,根据一些风格指南,这是推荐的bash脚本的开始。更具体地说,它的u
选项-interactive给出了错误/scripts-venv/bin/activate: line 57: PS1: unbound variable
。我可以把它取下来,但我只是想知道为什么会这样。
谢谢
如果您可以更新,virtualenv>;=16.2将不再有PS1未设置的错误
如果您能够更新
virtualenv
库,您将发现这一问题现在已得到修复。它是在pypa/virtualenv/pull/922中修复的,它包含在16.2里程碑中。在关于版本
< 16.2
;以及对所看到内容的解释$PS1
是bash提示符中$
前面的文本。-u
表示对未绑定变量的引用是错误的。由于/scripts-venv/bin/activate
引用$PS1
,并且交互shell上没有提示,因此这是一个未绑定变量,-u
导致脚本失败。在也许这有助于:
https://unix.stackexchange.com/questions/170493/login-non-login-and-interactive-non-interactive-shells
调用脚本时,运行该脚本的shell没有提示。现在,看看
bin/activate
,第57行:您可以看到
$PS1
将被求值,并且因为您已经设置了-u
,您的脚本无法继续,因为-u
表示尝试对未设置变量进行参数计算是错误的。在以下是您的一些选择:
{cd9>你可以修正}
第57行:
^{pr2}$第61行:
:-
语法使扩展默认为空字符串而不是未绑定,因此没有错误。但这是一个沉重的任务,因为您正在搞乱virtualenv
创建的代码。在选项2:解决方法
在
activate
脚本中删除-u
可能更好。在试试这个剧本,看看我是什么意思:
通过在激活期间关闭
-u
,然后再次打开它,您就可以解决virtualenv的尴尬(如果您不想修复它的话)。在选项3[未来!]在
只需更新virtualenv,使其版本为>;=16.2。
pip install upgrade virtualenv
相关问题 更多 >
编程相关推荐