【问题标题】:Is python interpreter in vscode using pipenv or venvvscode中的python解释器是使用pipenv还是venv
【发布时间】:2021-12-12 12:40:47
【问题描述】:

我选择了我的 python 解释器作为在 vscode 中使用 pipenv shell 创建的一个 pipenv。然后,如果我手动打开终端/cmd 或使用右侧的播放按钮运行脚本,打开的新终端/cmd 将运行在虚拟环境中运行终端的激活脚本。我的问题是,它是使用我的 pipenv 环境还是 venv 环境?因为如果我运行 pipenv shell 或 pipenv 安装,它会说 “Pipenv 发现自己在虚拟环境中运行,所以它会自动使用那个环境......”。而且,如果我键入 exit,它不会终止该环境,而是关闭终端。

【问题讨论】:

    标签: python visual-studio-code pipenv


    【解决方案1】:

    您正在使用显示在 VSCode 左下角的 python 解释器。

    即使你在终端中激活了一个由 pipenv 创建的虚拟环境,它也不会影响新的终端并执行 python 代码。

    如果 pipenv 发现它在虚拟环境中,它将不会使用命令 pipenv install 创建新的虚拟环境。如果你执行pipenv shell,它仍然在你之前激活的虚拟环境中。并且你可以检查你使用的是哪个python来验证它。

    【讨论】:

    • 所以只是为了确认......虽然终端没有被pipenv激活(我猜vscode正在使用venv激活),如果我运行任何python脚本,我在技术上使用pipenv环境?跨度>
    • @danialsaufi 这取决于您选择的 Python 解释器。您可以从 VSCode 的左下角获取它。
    • 我只有一个由 pipenv 创建的解释器,我已经选择了它。但是,当终端被激活时,它只显示(文件夹名称)而不是(文件夹名称 - [id])。如果我没记错的话,(文件夹名称 - [id])是 pipenv 而(文件夹名称)是 venv。
    【解决方案2】:

    这是我通常与 pipenv 交互的方式:

    • 检查你是否在 pipenv 上而不是在你 pip graph 上。 如果终端打印 Courtesy Notice: Pipenv found itself running within a virtual environment(...) 则表示您处于常规 venv 中
    • 然后你可以deactivatepipenv shell 如果你想这样做 干净还是直接pipenv shell(不知道有没有 差异),终端将加载环境变量和 在剩余的持续时间内激活 pipenv 环境。
    • 之后,您可以重新加载解释器并选择 Python(...):pipenv 选项。
    • 如果你在这里exit,你会回到你的常规venv,之后你可以exit关闭终端或deactivate回到你的全局环境。

    venv 使用与 pipenv 相同的文件夹。安装的包也是一样的,你可以通过pip graphpip list来检查,所以只需手动运行pip shell即可。

    我很想知道是否有某种方法可以从 pip shell 自动激活 VS Code 中的环境。

    【讨论】:

    • 这是一个不错的选择。但是,是的,如果它更像是自动的,那就太好了,因为有时您有时会忘记检查它并最终使用 venv 环境而不是 pipenv。根据我从一些研究中了解到,这是虚拟环境中一个持续存在的问题,我认为只能由 vscode 开发人员自己解决。
    猜你喜欢
    • 2021-12-03
    • 2022-01-24
    • 2020-10-27
    • 2012-08-28
    • 2023-01-10
    • 1970-01-01
    • 2019-04-18
    • 2018-09-18
    • 1970-01-01
    相关资源
    最近更新 更多