如何在 pyenv 中创建一个 post virtualenv 钩子来升级 pip 包
How can I make a post virtualenv hook in pyenv to upgrade pip packages
我正在使用 pyenv to manage different Python versions on my machine, and pyenv-virtualenv 来管理我的静脉。当我使用 pyenv virtualenv foo
之类的东西创建新的 venv 时,它不会将最新版本的 pip
、setuptools
和 wheel
安装到 venv 中。我想在每个 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 中调用此命令?
好的,我想通了,您可以将刚创建的 virtualenv 名称指定为 PYENV_VERSION 并调用 pyenv-exec
.
upgrade_packages() {
PYENV_VERSION=$VIRTUALENV_NAME pyenv-exec pip install --upgrade pip setuptools wheel
}
after_virtualenv 'upgrade_packages'
我正在使用 pyenv to manage different Python versions on my machine, and pyenv-virtualenv 来管理我的静脉。当我使用 pyenv virtualenv foo
之类的东西创建新的 venv 时,它不会将最新版本的 pip
、setuptools
和 wheel
安装到 venv 中。我想在每个 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 中调用此命令?
好的,我想通了,您可以将刚创建的 virtualenv 名称指定为 PYENV_VERSION 并调用 pyenv-exec
.
upgrade_packages() {
PYENV_VERSION=$VIRTUALENV_NAME pyenv-exec pip install --upgrade pip setuptools wheel
}
after_virtualenv 'upgrade_packages'