尽管在WSL2中激活了虚拟环境,但Python版本不变

xxls0lw8  于 2022-12-27  发布在  Python
关注(0)|答案(2)|浏览(192)
    • 背景:**

在WSL2中(ubuntu20.04)我在一个目录中创建了一个python虚拟环境,使用命令python3 -m venv venv将系统的python版本设置为python3.11(下载后)通过sudo update-alternatives --config python3,然后选择版本。我注意到我在启动wsl2时有一些丢失模块的错误(发生在电脑重启后),我读到这是因为我使用的python版本与ubuntu20.04不同,所以我像以前一样通过配置菜单切换回3.8,我也使用连接到我的WSL2的VS代码。
下面是我的venv目录中的一些内容:x一名男子2名1名x一名男子3名1名x一名男子4名1名x一名男子5名1名x一名男子6名1名

    • 问题:**

在通过source venv/bin/activate激活我的虚拟环境后,当我执行python3 --version时,尽管使用3.11创建了虚拟环境,但我仍然获得了3.8.10版本。我能够在VS代码上将解释器设置为3.11。我知道我处于虚拟环境中,因为我的命令提示符我在虚拟环境中进入python控制台,执行import syssys.path,这是我的输出['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload']。**为什么python版本不变,我是不是误解了什么或者我做错了什么?**看起来pip也不工作,但是当我把系统python切换到3.11时可以工作(我试着在3.8上安装它,但是它说已经安装了)。

    • 已解决:**

回答如下,只是重新创建了虚拟环境,同时确保我的系统python版本是3.11(之前可能有些混淆)。

iaqfqrcu

iaqfqrcu1#

通过改变sudo update-alternatives --config python3中的选择,你也可以为所选的vitrual环境改变所选的python版本(至少当使用venv时,它可能与其他工具不同)。
这可能会导致问题,因为当使用特定python版本xx.xx中的venv创建新的虚拟环境envname时,会在/envname/lib/中创建一个名为pythonxx.xx的目录,并在其中创建一个名为site-packages的目录,该目录包含由该特定环境的pip安装的包。
所以通过sudo update-alternatives --config python3改回环境的原始python版本应该可以解决这个问题,丢失模块的错误可能是由于当前选择的python版本与安装虚拟环境的原始版本不兼容。
就我个人而言,为了避免混淆,我用python版本作为后缀来命名我的虚拟环境,例如envname_py3.11.1,但可能有一个更好的方法,我不知道。

mspsb9vt

mspsb9vt2#

我在python3.11上删除了我的venv目录并重新创建了我的虚拟环境。这解决了我的问题。

相关问题