linux中python虚拟环境和版本的选择

环境
python3.13.5, opensuse tumbleweed

venv可以直接使用

python3 -m venv test_env

含意是使用venv模块,创建test_env目录

使用虚拟环境

如果是fish shell

source test_env/bin/activate.fish

其他shell

source test_env/bin/activate

退出虚拟环境

deactivate

下载

使用虚拟环境必然是要对其使用的,所以这边使用

pip install jupyterlab

下载完后运行

jupyter lab

修改虚拟环境目录的名称

因为名称是随便创建的,所以需要修改,直接更改目录名就可以了。

查看具体虚拟环境使用的python版本

方法一:激活环境后查看(标准流程)

cd ~/playground
source test_env/bin/activate.fish

方法二:不激活环境,直接指定解释器路径

~/playground/test_env/bin/python --version

创建venv的时候指定python的版本

venv 本身不能下载和安装一个新的 Python 版本。它的作用是基于一个已经存在于您系统上的 Python 版本,来创建一个隔离的副本。

虚拟环境下进入的jupyter lab用的是虚拟环境的python

在这里插入图片描述
可以使用pip list去验证,可以看到pip list | wc -l两者显示的行数是不同的。

图形化编辑器下管理和使用虚拟环境的python或本机python

pycharm

这个pycharm会自己下载一个python,所以不必担心。

vscode

安装这个python插件,一般来说创建.py文件右下角vscode就会推荐安装一个python插件,点击install就可以进行安装。
在这里插入图片描述
那么安装具体有什么用呢?
右击代码的时候,它可以run python代码。
形如

/bin/python3 /home/yqh/playground/Python_WorkSpace/hello.py

可以看到调用了我们系统的python3,如果我们自己要运行,且没有安装这个python插件,那么就一般来说使用

python3 hello.py

这样子的语句去运行。

那如何切换python的具体版本呢?
可以点击右下角的这个python版本的文字。
在这里插入图片描述
会出现这样的选项框。
在这里插入图片描述

可以手动选择对应的虚拟环境下的python可执行文件。
在这里插入图片描述
怎么删除这个添加的路径的呢?
很简单,如果失效了的话,重启vscode就可以了。

虽然python的编译器的位置确定了,但是terminal下的pip命令还是本机的,所以直接拿pip install命令去下载必然是不行的。

所以还是需要在使用venv前使用

source ~/playground/jupyter_lab/bin/activate.fish

去激活对应的venv虚拟环境。

我看了一下vscode那个create virtual environment的选项
在这里插入图片描述
里面有两种创建方式。

您好!很抱歉方法三没有像预期那样工作。这是一个偶发但很经典的问题,通常是 VS Code 的终端设置与您的 Shell (Fish) 没有完全匹配导致的。

别担心,我们一步一步来排查,90%的可能性问题出在第一步,我们肯定能解决。


排查步骤

第一步:确认 VS Code 知道您在用 Fish Shell (最可能的原因)

VS Code 的 Python 插件非常智能,它知道要为 Fish Shell 运行 activate.fish 脚本。但前提是,VS Code 本身必须知道它启动的集成终端就是 Fish Shell。

  1. 打开 VS Code 设置

    • 按下快捷键 Ctrl + , (逗号) 打开设置界面。
    • 或者通过菜单 “File” -> “Preferences” -> “Settings”。
  2. 搜索终端设置
    在顶部的搜索框中,输入 Terminal Integrated Default Profile Linux

  3. 修改设置
    您会看到一个名为 “Terminal > Integrated > Default Profile: Linux” 的设置项。这个设置告诉 VS Code 在 Linux 系统上默认使用哪个终端。

    • 请点击下拉菜单,确保您选择的是 fish
    • 如果它当前是 bash 或其他值,那这就是问题所在!请务必将它改为 fish
  4. 重启终端
    修改设置后,请务必关闭所有已打开的 VS Code 集成终端窗口,然后通过菜单 “Terminal” -> “New Terminal” 打开一个全新的终端。

现在,再看看 (venv) 是否出现了。如果还没有,请继续下一步。

第二步:检查自动激活设置是否开启

VS Code 有一个总开关来控制这个功能。我们需要确保它处于打开状态。

  1. 回到 VS Code 设置 (Ctrl + ,)。
  2. 搜索激活设置
    在搜索框中,输入 Python Terminal Activate Environment
  3. 确认勾选
    确保 “Python > Terminal: Activate Environment” 这个选项是被勾选的状态。如果没勾选,请勾选上。
第三步:重新确认解释器选择

我们再做一次健全性检查,确保当前工作区确实关联了正确的虚拟环境。

  1. 按下 Ctrl + Shift + P 打开命令面板。
  2. 运行 Python: Select Interpreter
  3. 再次从列表中选择您的虚拟环境(例如,路径中包含 test_envjupyter_lab 的那一个)。
  4. 检查 VS Code 窗口右下角的状态栏,确认显示的是 Python ... ('test_env') 这样的字样。
第四步:终极手段:重载窗口

如果以上步骤都设置正确但依然无效,可以尝试重载 VS Code 窗口,这会强制所有配置和插件重新加载。

  1. 按下 Ctrl + Shift + P 打开命令面板。
  2. 运行 Developer: Reload Window (开发者: 重载窗口)。

总结清单

请按照这个顺序检查一遍:

  1. VS Code 默认终端是不是 fish (这是最关键的一步)
  2. Python 自动激活设置是否打勾?
  3. 当前工作区的解释器是否已正确选择?
  4. 尝试过重载窗口吗?

通常,在正确完成了第一步和第二步之后,问题就会迎刃而解。设置好之后,再打开一个新终端,看看 (venv) 是不是就神奇地出现了!