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

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呢,可能和环境变量优先度有关。

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

### Jupyter中"No module named 'semopy'"的解决方案 当在Jupyter Notebook中遇到`No module named 'semopy'`错误时,通常是因为当前使用的Python解释器环境中未正确安装该模块或者Jupyter Notebook所依赖的Kernel与目标环境不一致。以下是可能的原因以及对应的解决办法: #### 1. **确认`semopy`是否已安装** 如果尚未安装`semopy`库,则可以通过以下命令进行安装: ```bash pip install semopy ``` 对于使用Conda管理环境的情况,建议优先通过Conda安装以避免潜在冲突: ```bash conda install -c conda-forge semopy ``` 需要注意的是,在执行上述命令之前,请确保处于正确的虚拟环境中[^1]。 --- #### 2. **验证Jupyter Kernel绑定的Python环境** 即使已在某个环境中安装了`semopy`,但如果Jupyter Notebook运行的Kernel指向另一个未安装此模块的Python环境,仍然会触发`ModuleNotFoundError`。因此需检查并调整Jupyter Notebook的Kernel设置。 ##### 方法一:切换到正确的Conda环境下的Kernel 进入目标Conda环境后,注册一个新的IPython KernelJupyter识别: ```bash python -m ipykernel install --user --name myenv --display-name "Python (myenv)" ``` 其中`myenv`应替换为目标环境名称。完成后重启Jupyter Notebook,并在界面右上角选择新创建的Kernel `Python (myenv)`[^3]。 ##### 方法二:修改默认Kernel至指定环境 若希望全局更改默认Kernel为特定环境,可以先卸载旧Kernel再重新关联新的环境路径: ```bash jupyter kernelspec uninstall python3 python -m ipykernel install --user ``` --- #### 3. **排查环境变量配置问题** 有时由于PATH或其他系统级环境变量设置不当,可能导致Jupyter误加载其他版本的Python解释器而非预期的Anaconda/Miniconda实例。此时可通过打印当前活动环境来诊断: ```python import sys print(sys.executable) ``` 正常情况下输出应当类似于`.../anaconda3/envs/myenv/bin/python`。如果不是期望的结果,则说明存在环境隔离不足的问题[^2]。 --- #### 4. **强制更新或重装相关组件** 作为最后手段,考虑清理缓存数据并重新构建必要的软件栈部分: - 更新Pip工具链及其扩展功能; - 删除原有Kernel定义文件夹后再重建链接关系。 具体操作如下所示: ```bash pip install --upgrade pip setuptools wheel rm -rf ~/.local/share/jupyter/kernels/* python -m ipykernel install --user ``` 以上措施能够有效应对大多数因环境混乱引发的功能障碍现象。 --- ### 总结 综上所述,针对Jupyter Notebook提示`No module named 'semopy'`这一情况,主要从以下几个方面入手解决问题:一是保证目标包已被正确定位且成功导入;二是明确区分各独立工作区之间的界限以免混淆;三是适时优化整体框架结构从而提升稳定性表现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值