如何在git post-receive hook中指定python解释器?

时间:2018-03-10 23:47:59

标签: python git

我有使用install命令的post-receive hook:

git push live master

在我调用pip install挂钩调用/usr/bin/python命令之后,但在远程服务器安装上启动了系统python2.7而不是我在pyenv中指定为python3.6.4。我想。在非交互式会话中不会调用带有pyenv设置的.bashrc ...

所以...如何在git post-receive hook中指定python解释器?

丑陋的解决方案:

  • 修改链接/home/user/.pyenv/.../pip install -r ...,使其指向所需的解释器(对于pip也是如此)
  • 指定点source path/to/virtualenv/activate
  • 的完整路径
通过创建单独的virtualenv并将activate添加到钩子脚本来

解决

在我的情况下,pyenv创建的virtualenv具有不可执行的chmod +x path/to/activate,因此还需要使{{1}}

使其可执行

3 个答案:

答案 0 :(得分:0)

检查您的收件后挂钩脚本的adding a shebang是否有帮助

#!/usr/bin/python3

或者:

#!/usr/bin/env python3

另一个替代方法described here是定义pip3,它明确引用用python3安装的pip。

答案 1 :(得分:0)

如何明确调用python3来调用pip

python3 -m pip install -r requirements.txt

答案 2 :(得分:0)

通过在第一次使用Python之前将lines that make pyenv work权限复制到接收后挂钩脚本中,可以按预期使用pyenv。

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"
fi