我正在使用pyenv来管理计算机上的不同Python版本,并使用pyenv-virtualenv来管理我的虚拟设备。当我创建带有pyenv virtualenv foo
之类的新venv时,不会将最新版本的pip
,setuptools
和wheel
安装到该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内部调用此命令?
答案 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'