我有使用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
activate
添加到钩子脚本来解决。
在我的情况下,pyenv创建的virtualenv具有不可执行的chmod +x path/to/activate
,因此还需要使{{1}}
答案 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