1. 下面提到的问题应该是不同环境(base、虚拟环境)的区别,而不是python版本的区别。
2. 这个方法起到了比较好的效果,但是底层的逻辑还没太明白,有时间继续研究下。
3. 最终的结果好像是pycharm、anaconda用的python环境都是自己下的python312那个环境,是同一个环境。
-------------------------------------------------------------------------------------------------------------------------------
最近在学机器学习,不在pycharm里搞,而是要用到最容易报错且不太容易改的jupyter;这不,在要用到keras包的时候,又报错了。
想着在conda环境装一下keras,装了好久老是装不上。
尝试在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已下好,不报错。
如果是自己创建的文件,可以自己选用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 解释器,所以导入 keras
和 pandas
时,访问的是系统安装目录中的包。
而且检查虚拟环境的 Python 解释器:
指向这么多python,那为什么优先是python3.12呢,可能和环境变量优先度有关。
这里就不再折腾了,反正一顿操作下来起到了比较好的效果,结束。