首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在git后接收钩子中指定python解释器?

如何在git后接收钩子中指定python解释器?
EN

Stack Overflow用户
提问于 2018-03-11 07:47:59
回答 3查看 345关注 0票数 3

我有带有install命令的post-receive钩子:

代码语言:javascript
复制
pip install -r requirements.txt

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

所以..。如何在git后接收钩子中指定python解释器?

丑陋的解决方案:

  • 修改链接/usr/bin/python,使其指向所需的解释器(与pip相同)
  • 指定pip /home/user/.pyenv/.../pip install -r ...

的完整路径

通过创建单独的virtualenv并将source path/to/virtualenv/activate添加到钩子脚本来解决问题。

在我的示例中,由pyenv创建的virtualenv具有不可执行的activate,因此还需要使用chmod +x path/to/activate使其可执行

EN

回答 3

Stack Overflow用户

发布于 2018-03-11 08:18:48

检查接收后钩子脚本的adding a shebang是否可以提供帮助

代码语言:javascript
复制
#!/usr/bin/python3

或者:

代码语言:javascript
复制
#!/usr/bin/env python3

另一种替代方法是定义pip3,它显式引用与python3一起安装的pip。

票数 0
EN

Stack Overflow用户

发布于 2018-03-11 09:49:44

显式调用python3来调用pip怎么样?

代码语言:javascript
复制
python3 -m pip install -r requirements.txt
票数 0
EN

Stack Overflow用户

发布于 2019-05-26 00:14:37

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

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49215194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档