解决 Conda 和 Python 共存环境下 Jupyter Notebook 启动冲突问题(含报错分析与修复命令)

在日常开发中,很多人(包括我)在同时安装了 Anaconda原生 Python(如 Python 3.12) 的 Windows 环境中运行 Jupyter Notebook,结果遇到了启动报错、DLL 加载失败等一系列诡异的问题。这篇文章记录我解决 Jupyter 启动冲突的完整过程,并附上具体的报错信息、成因分析与最终的修复命令,供有类似需求的朋友参考。


🧨 问题背景

我希望通过 PyCharm 启动 Jupyter Notebook 服务,初始使用如下命令:

C:\Python312\python.exe -m jupyter -m notebook --notebook-dir=C:\Users\onefly\Desktop\AlphaDetector --no-browser --port=8889

结果却接连报错,例如:

ImportError: DLL load failed while importing _device: 找不到指定的模块。

Traceback (most recent call last):
  ...
  File "...\zmq\backend\__init__.py", line 31, in <module>
    raise original_error from None
ImportError: DLL load failed while importing _device: 找不到指定的模块。

C:\Python312\python.exe -m jupyter -m notebook --notebook-dir=C:\Users\onefly\Desktop\AlphaDetector --no-browser --port=8889
Traceback (most recent call last):
  File "C:\Users\onefly\anaconda3\Scripts\jupyter-notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "C:\Users\onefly\anaconda3\lib\site-packages\notebook\notebookapp.py", line 77, in <module>
    from .services.kernels.kernelmanager import MappingKernelManager, AsyncMappingKernelManager
  File "C:\Users\onefly\anaconda3\lib\site-packages\notebook\services\kernels\kernelmanager.py", line 18, in <module>
    from jupyter_client.session import Session
  File "C:\Users\onefly\anaconda3\lib\site-packages\jupyter_client\__init__.py", line 8, in <module>
    from .asynchronous import AsyncKernelClient  # noqa
  File "C:\Users\onefly\anaconda3\lib\site-packages\jupyter_client\asynchronous\__init__.py", line 1, in <module>
    from .client import AsyncKernelClient  # noqa
  File "C:\Users\onefly\anaconda3\lib\site-packages\jupyter_client\asynchronous\client.py", line 6, in <module>
    from jupyter_client.channels import HBChannel
  File "C:\Users\onefly\anaconda3\lib\site-packages\jupyter_client\channels.py", line 12, in <module>
    import zmq.asyncio
  File "C:\Users\onefly\anaconda3\lib\site-packages\zmq\__init__.py", line 103, in <module>
    from zmq import backend
  File "C:\Users\onefly\anaconda3\lib\site-packages\zmq\backend\__init__.py", line 31, in <module>
    raise original_error from None
  File "C:\Users\onefly\anaconda3\lib\site-packages\zmq\backend\__init__.py", line 26, in <module>
    _ns = select_backend(first)
  File "C:\Users\onefly\anaconda3\lib\site-packages\zmq\backend\select.py", line 31, in select_backend
    mod = import_module(name)
  File "C:\Users\onefly\anaconda3\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "C:\Users\onefly\anaconda3\lib\site-packages\zmq\backend\cython\__init__.py", line 6, in <module>
    from . import (
ImportError: DLL load failed while importing _device: �Ҳ���ָ����ģ�顣

Process finished with exit code 1

或另一常见错误:

__main__.py: error: argument -m: expected one argument

🧠 错误原因解析

这个问题本质上是由于以下两方面造成的环境与命令冲突

  • ✅ 你使用的是原生 Python 解释器(如 C:\Python312\python.exe);
  • ❌ 但系统中安装的 jupyter / notebook 包却来自 Anaconda,路径如 C:\Users\yourname\anaconda3\lib\site-packages\
  • ⚠️ DLL 加载失败是因为 Conda 中的 .pyd 与原生解释器不兼容;
  • 🚫 命令中错误地使用了两个 -m 也是导致语法解析失败的原因。

✅ 正确做法

1️⃣ 将 Jupyter 安装到目标解释器中

打开终端(或 PyCharm Terminal),用目标解释器安装

C:\Python312\python.exe -m pip install notebook

不要使用 conda install,避免混入 Conda 的路径污染。


2️⃣ 启动命令使用 PyCharm 推荐格式(不含 -m

在 PyCharm 中设置 Jupyter Server 的 Command Line Arguments 时,不要加 -m,直接写模块名即可:

notebook --no-browser --port=8888 --NotebookApp.token='' --NotebookApp.password=''

🔐 参数说明:

  • --no-browser:不自动打开浏览器;

  • --port=8888:指定端口;

  • --NotebookApp.token='':关闭 token 登录;

  • --NotebookApp.password='':关闭密码验证;

  • 💡 默认工作目录是 PyCharm 的项目根目录,也可以添加:

    --notebook-dir=.
    

    来显式设定为当前目录。


✅ 最终推荐启动命令(建议复制粘贴)

notebook --notebook-dir=. --no-browser --port=8888 --NotebookApp.token='' --NotebookApp.password=''

✅ 可长期使用,无需每次更改路径或手动复制 token。


🛠 常见错误对照表

报错信息 原因 解决方式
ImportError: DLL load failed while importing _device DLL 冲突 / 环境混用 仅使用单一解释器 + 安装 notebook
argument -m: expected one argument -m 参数误用 只能有一个 -m,或在 PyCharm 不使用
Skipped non-installed server(s): ... 语言插件未安装 忽略即可(非致命)
Could not determine npm prefix Node.js 未装 可忽略,或安装 node 支持前端插件

🧩 PyCharm 配置贴士

打开:Settings > Languages & Frameworks > Jupyter > Jupyter Servers

  • 选择:Configured Server
  • Python Interpreter:选择 非 Anaconda 的 Python(如 Python 3.12
  • Command line arguments:
notebook --notebook-dir=. --no-browser --port=8888 --NotebookApp.token='' --NotebookApp.password=''
  • 启动后访问:

    http://127.0.0.1:8888
    

🔍 总结

📌 关键词索引(便于搜索):

  • jupyter 启动失败 DLL load failed
  • jupyter -m notebook 报错 argument -m expected
  • conda 和 python 冲突 jupyter 报错
  • pycharm jupyter server 命令怎么写

解决 Jupyter 启动冲突的关键在于:

  • 👊 只用一种环境(推荐原生 Python);
  • 🔧 将 notebook 安装到该解释器;
  • ✂️ 移除多余的 -m 命令修饰;
  • 💡 使用通用命令支持自动免 token、无需路径改动,适配 PyCharm 与 CLI。

希望这篇文章能帮你少踩坑,顺利用 PyCharm 配好 Jupyter Notebook。如果你也踩过类似坑,欢迎留言交流你的经验!

posted @ 2025-07-01 18:07  孤飞  阅读(220)  评论(1)    收藏  举报