【问题标题】:How can I get my vscode terminal to use my venv for python rather than the system version?如何让我的 vscode 终端将我的 venv 用于 python 而不是系统版本?
【发布时间】:2019-04-09 20:35:01
【问题描述】:

我使用python -m venv venv 设置了一个venv,它被vscode 识别为有效的解释器,并使用code-runner vscode 扩展按预期运行我的代码。但是vscode集成的bash终端只使用系统版本的python,即使在运行source /Fake/path/to/env/bin/activate之后也是如此。终端在输入提示上显示(env),但通过os.path.dirname(sys.executable)检查版本显示python的版本是我系统路径中的版本,而不是venv中的版本。所以我正在安装的软件包被安装到系统 python 而不是 venv。

这是 vscode 中的终端而不是 venv 本身的问题,因为当我在本机终端(非集成)中按照上述步骤操作时,我得到了 venv python 的正确路径。

我尝试将 vscode 中的python.venvPath 变量设置为${workspaceFolder}/envfake/path/to/env,但都不起作用。我认为可以在 terminal.integrated.shellArgs.macos 设置下设置 bash shell 参数,但无法弄清楚如何让它在启动时运行正确的激活脚本。作为参考,我当前的 vscode 设置如下:

"settings": {
    "code-runner.fileDirectoryAsCwd": true;
    "code-runner.executorMap": {
        "python": "env/bin/python3",
    },
    "python.venvPath": "${workspaceFolder}/env",
    "terminal.integrated.cwd": "${workspaceFolder}",
    },
}

基本上,我希望集成终端激活 venv 激活 bash 脚本并临时替换默认选择我的 venv python 的路径。然后我就可以使用 pip3 将相关包安装到 venv 而不是系统 python。但是尽管在输入之前提示显示(env),但实际行为是它在发出命令时指向错误的python版本,例如python3pip3

任何建议都会很棒!

【问题讨论】:

    标签: python macos visual-studio-code vscode-settings python-venv


    【解决方案1】:

    我遇到了同样的问题,尝试了各种方法,但最终都奏效了。
    1. python -m venv myvenv
    2. 打开命令面板并选择解释器 myenv
    3. CTRL + SHIFT + ` 在 myenv 中打开终端
    然后我就可以看到预期的... (myenv) C:\Git\pyPilot>

    【讨论】:

      【解决方案2】:

      这是 2021 年的问题,但如果您(再次)选择 VS Code 左下角的解释器,然后打开一个新终端(Ctrl+Shift+`),您将看到 venv 终端提示中的名称。

      关闭和打开 VS Code 后,venv 仍然处于活动状态。也许由于某种原因它被停用了。

      终端使用Activate.ps1,而不是activate.bat

      当前用户必须能够执行 PoserShell 脚本。

      【讨论】:

        【解决方案3】:

        您可以尝试设置默认解释器。在 VSCode 屏幕的最左下角,您可以单击解释器名称并选择您想要的。见下图。红色椭圆表示单击的位置。

        单击指示的空间后,将打开一个菜单,您可以在其中选择 Python 解释器。见下图。

        【讨论】:

        • 谢谢 - 虽然解释器按我预期的那样工作,但问题在于终端本身 - 除了 vscode 中的终端之外的所有东西都按照它在 venv 中的方式运行,但终端没有与 venv 对齐.有没有办法使用 shellArgs 或类似方法启动 venv 以自动识别 venv 的正确 python 路径?
        • 有同样的问题,设置python解释器不会改变终端中使用的python。设置一个新的环境也不会改变终端正在使用的python
        【解决方案4】:

        我对在 VSCode 中使用 Python 非常陌生,正在从事一个大学项目。我在集成终端中的 Python 版本遇到了同样的问题。我不确定它是否会影响或破坏其他任何东西,但现在......我做了以下工作,两者都工作在 Python 的版本从 2(系统一)更改为 3(Anaconda 安装)。

        第二次尝试:更改 PATH 以首先使用 Anaconda。需要清理......但基本工作。

        (base) MacBook-Pro-2:env myuserdir$ echo $PATH
        
        /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myuserdir/env/bin:/anaconda3/bin:/anaconda3/condabin
        
        (base) MacBook-Pro-2:env myuserdir$ python --version
        
        Python 2.7.10
        
        (base) MacBook-Pro-2:env myuserdir$ PATH="/anaconda3/bin:$PATH"
        
        (base) MacBook-Pro-2:env myuserdir$ echo $PATH
        
        /anaconda3/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myuserdir/env/bin:/anaconda3/bin:/anaconda3/condabin
        
        (base) MacBook-Pro-2:env myuserdir$ python --version
        
        Python 3.7.1
        

        第一次尝试:

        source /env/bin/activate within the VSCode Terminal and that changed the Python version.
        
        Open a new integrated Terminal in VSCode: Terminal\New Terminal:
        
        (base) MacBook-Pro-2:env myuserdir$ source /anaconda3/bin/activate
        
        (base) MacBook-Pro-2:env myuserdir$ conda activate base
        
        (base) MacBook-Pro-2:env myuserdir$ python --version
        Python 2.7.10
        
        (base) MacBook-Pro-2:env myuserdir$ which python
        
        /usr/bin/python
        
        (base) MacBook-Pro-2:env myuserdir$ pwd
        
        /Users/myuserdir/env/env
        
        (base) MacBook-Pro-2:env myuserdir$ cd ..
        
        (base) MacBook-Pro-2:env myuserdir$ ls
        
        bin             env             include         lib             pyvenv.cfg
        
        (base) MacBook-Pro-2:env myuserdir$ source bin/activate
        
        (env) (base)MacBook-Pro-2:env myuserdir$ which python
        
        /Users/myuserdir/env/bin/python
        
        (env) (base) MacBook-Pro-2:env myuserdir$ python --version
        
        Python 3.7.1
        

        【讨论】:

          【解决方案5】:

          cd ./myenv/Scripts/

          激活

          为我工作

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-07-05
            • 1970-01-01
            • 2021-11-12
            • 2022-11-23
            • 1970-01-01
            • 1970-01-01
            • 2022-11-15
            • 2022-01-08
            相关资源
            最近更新 更多