虚拟环境设置成kernel来解决一些jupyter报错问题

发布于:2024-11-04 ⋅ 阅读:(148) ⋅ 点赞:(0)

1. 下面提到的问题应该是不同环境(base、虚拟环境)的区别,而不是python版本的区别。

2. 这个方法起到了比较好的效果,但是底层的逻辑还没太明白,有时间继续研究下。

3. 最终的结果好像是pycharm、anaconda用的python环境都是自己下的python312那个环境,是同一个环境。

-------------------------------------------------------------------------------------------------------------------------------

最近在学机器学习,不在pycharm里搞,而是要用到最容易报错且不太容易改的jupyter;这不,在要用到keras包的时候,又报错了。

想着在conda环境装一下keras,装了好久老是装不上。 

尝试切换到anaconda环境后,在pycharm里的packages里安装,不出意外是同样的结果。

跟着网上学解决这种问题,加上询问chatgpt,又是白忙活的一上午,网上说是下载镜像网址有问题,我跟着做解决不了,因为我本来就没设置什么镜像,还在寻找方法中.......

如图,anaconda自带的python是3.7版本的,

我自己下载的python是3.12版本的,不是说3.7不好,我反正不太清楚为什么anaconda的python3.7环境老是报错,根本就不能conda install,于是我想到,能不能让jupyter用我自己下的python3.12环境呢?

于是chatgpt说,当然可以。 

 

然后就是这篇文章的重点。

这里指的切换python版本使用,不是单纯的把python.exe复制过来,而是用到了虚拟环境。

这里在anaconda prompt上输入‘conda env list’,出现了myenv这个常见虚拟环境,pycharmproject虚拟环境最后在提一嘴。

 可以在文件位置里对应到:

而我发现,之前在安装anaconda的时候,为了不让anaconda的python覆盖我的自带的python,好像创建了个文件夹(详情在:史上最全最详细的Anaconda安装教程-CSDN博客),也是一个虚拟环境,对应位置在:

这两个不同位置的虚拟环境有啥区别?gpt是这么说的:

  • pycharmproject 是一个位于 Anaconda 全局路径下的虚拟环境,而 myenv 是一个位于用户路径下的环境,它们互相独立。
  • python_ori 目录可能是一个未完成的虚拟环境或非 Conda 认可的环境,需要手动检查。
  • 虽然它们路径不同,但这些环境都是独立的,并不会互相影响。你可以自由切换和使用它们。

---------------------------------------------------------------------------------------------------------------------------------

我发现python_ori里面的python正是我在pycharm常用的python3.12,于是我想着把这个python作为jupyter的python,即让python_ori虚拟环境设置成下面的kernel。下面开始操作:

1.先激活虚拟环境python_ori

conda activate python_ori

2.在虚拟环境中安装 ipykernel

pip install ipykernel

3.将虚拟环境注册为 Jupyter Kernel

python -m ipykernel install --user --name python_ori --display-name "Python (python_ori)"

如果报错了,就用python的绝对路径。

C:\Users\13642\AppData\Local\Programs\Python\Python312\python.exe -m ipykernel install --user --name python_ori --display-name "Python (python_ori)"

 然后就成功了,在jupyter右上角出现另外一个选项。

现在创建一个文件,检查python版本。

试着导入keras块,之前在pycharm(python3.12环境)已下好,不报错。

如果是自己创建的文件,可以自己选用python 3或python(python_ori) 。如果是外面来的文件,可以在kernel里切换。

 但是我发现切换不切换,好像用的都是python3.12.....和pycharm切换interpreter又不同,我不知道怎么切换回之前anaconda自带的python3.7了....希望后面不会影响,反正之前也老是报错,有空的时候再去看看什么原因。

之前在笔记本电脑也创建过一个myenv环境,即可以创建一个python 3或者myenv的jupyter文件,本机的myenv虚拟环境python版本为3.8,忘记咋弄的了,重复上面的操作,应该也能创建类似的kernel。

最后讲一下pycharmproject这个虚拟环境,PyCharm会默认为每个项目创建一个虚拟环境,并将其作为解释器。你可以根据需求选择项目内的虚拟环境解释器。

anaconda:

pycharm: 

Anaconda 虚拟环境中会有一个完整的 Python 解释器和必要的库。Python 解释器位于虚拟环境的根目录,如上图,python解释器直接就在pycharmproject文件夹里。

PyCharm 会将虚拟环境保存在项目目录内,Python 解释器位于 Scripts 目录下,而不是根目录

-----------------------------------------------------------------------------------------------------------------------------

interpreter在pycharm中展示: 

 提一下,python里安装的keras、pandas这类包的位置,在对应环境的Lib\site-packages目录下,比如:

总结:我觉得报不报错可能和python版本问题不大,主要是环境的问题,我不知道为什么用anaconda的base环境时,conda install老是报错,但是切换成python_ori环境就没事,先用着吧,有时间再研究下。

后面我突然发现,我的keras包是哪来的?

在python_ori虚拟环境的Lib\site-packages目录下没有pandas和keras包,但是为什么能用呢

后面发现,这两个包竟然来自我自己下载的python3.12里面的Lib\site-packages目录。

也就是说,python_ori 使用的解释器路径指向了 系统的 Python 3.12 解释器,所以导入 keraspandas 时,访问的是系统安装目录中的包。

而且检查虚拟环境的 Python 解释器:

指向这么多python,那为什么优先是python3.12呢,可能和环境变量优先度有关。

 这里就不再折腾了,反正一顿操作下来起到了比较好的效果,结束。


网站公告

今日签到

点亮在社区的每一天
去签到