使用 pyenv 和 zsh 的 VSCode 任务

问题描述 投票:0回答:1

我在使用 pyenv-virtualenv (不是虚拟环境!)时为 VSCode 配置任务时遇到问题,有点类似于 this,但尚未解决,而且它也仅引用 .zshrc 而不是 .zprofile。

我配置了 pyenv 环境,并在项目中选择了 python 解释器。在 VSCode 内的终端中,我可以执行代码,并且终端会自动加载正确的 pyenv。

但是,当运行 VSCode 任务时,任务无法激活项目的 pyenv virtualenv。

例如在我的项目的终端我得到:

(proj) % pyenv local
projenv
(proj) % python --version
Python 3.10.4

我尝试过.vscode/tasks.json:


{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run some python",
            "type": "shell",
            "command": "pyenv activate projenv && python --version",´
        }
}

输出:

Python 2.7.18

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Run some python",
            "type": "shell",
            "command": "pyenv activate projenv && python --version",´
        }
}

任务运行的输出:

激活 virtualenv 失败。

也许 pyenv-virtualenv 尚未正确加载到您的 shell 中。 请重新启动当前 shell 并重试。

在我的 ~/.zprofile 中我有:

echo "Hello .zprofile"

在我的 ~/.zshrc 中我有:

echo "Hello .zshrc"
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

运行任务时,我得到“Hello .zprofile”,但没有得到 pyenv 激活所在的“Hello .zshrc”的输出。当我手动创建一个新的 VSCode 终端时,它会输出两者。

现在,如果我将 pyenv 激活复制或移动到 .zprofile 中,pyenv 虚拟环境将激活并且任务将运行。

但是为什么 VSCode 不首先读取我的 .zprofile 和 .zshrc 文件?

python zsh pyenv zshrc pyenv-virtualenv
1个回答
0
投票

要使用 zsh 激活

pyenv-virtualenv
,请将
eval "$(pyenv init -)"
放在
.zprofile
内,而不是
.zshrc
。前者在 VSCode 创建终端时执行,后者则不会。

© www.soinside.com 2019 - 2024. All rights reserved.