我如何在pyenv中发布post virtualenv钩子以升级pip包

时间:2019-01-13 12:47:00

标签: python virtualenv pyenv

我正在使用pyenv来管理计算机上的不同Python版本,并使用pyenv-virtualenv来管理我的虚拟设备。当我创建带有pyenv virtualenv foo之类的新venv时,不会将最新版本的pipsetuptoolswheel安装到该venv中。创建每个静脉后,我想在每个静脉内运行pip install --upgrade pip setuptools wheel

pyenv具有在命令之前和之后使用钩子的概念。我可以通过添加以下文件来运行此命令

~/.pyenv/plugins/pyenv-virtualenv/etc/pyenv.d/virtualenv/after.bash

具有以下内容

after_virtualenv 'pip install --upgrade pip setuptools wheel'

该命令已运行,但未在venv内部运行,因此仅使用当前的pip。如何在after_virtualenv挂钩中的venv内部调用此命令?

1 个答案:

答案 0 :(得分:1)

好吧,我知道您可以将刚刚创建的virtualenv名称指定为PYENV_VERSION并调用pyenv-exec

upgrade_packages() {
  PYENV_VERSION=$VIRTUALENV_NAME pyenv-exec pip install --upgrade pip setuptools wheel
}

after_virtualenv 'upgrade_packages'