我有带有install命令的post-receive钩子:
pip install -r requirements.txt
在我调用python钩子之后,调用pip install
命令,但是在远程服务器上,安装是在系统python2.7上启动的,而不是在pyenv中指定为全局的python3.6.4。我猜在非交互式会话中不会调用带有pyenv设置的.bashrc ...
所以..。如何在git后接收钩子中指定python解释器?
丑陋的解决方案:
/usr/bin/python
,使其指向所需的解释器(与pip相同)/home/user/.pyenv/.../pip install -r ...
的完整路径
通过创建单独的virtualenv并将source path/to/virtualenv/activate
添加到钩子脚本来解决问题。
在我的示例中,由pyenv创建的virtualenv具有不可执行的activate
,因此还需要使用chmod +x path/to/activate
使其可执行
发布于 2018-03-11 08:18:48
检查接收后钩子脚本的adding a shebang是否可以提供帮助
#!/usr/bin/python3
或者:
#!/usr/bin/env python3
另一种替代方法是定义pip3
,它显式引用与python3一起安装的pip。
发布于 2018-03-11 09:49:44
显式调用python3
来调用pip
怎么样?
python3 -m pip install -r requirements.txt
发布于 2019-05-26 00:14:37
在第一次使用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
https://stackoverflow.com/questions/49215194
复制相似问题