在 Windows 上使用 Anaconda 设置 Hydrogen 和 Atom

brb*_*brb 9 python anaconda atom-editor hydrogen

我想使用 Hydrogen 包在 ATOM 中交互式运行 python。我使用的是 Windows 10。我希望能够通过双击工具栏中的 ATOM 图标或双击 .py 文件来启动 ATOM 会话,而不必通过命令行启动 ATOM。我已经通过 Anaconda 发行版安装了 Python 3.8。我使用 pip install 来安装 ipykernel。

我收到一系列似乎很常见的回溯错误;

Traceback (most recent call last): File "C:\Users\BRB\anaconda3\lib\runpy.py", line 194, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\BRB\anaconda3\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\BRB\anaconda3\lib\site-packages\ipykernel_launcher.py", line 15, in from ipykernel import kernelapp as app File "C:\Users\BRB\anaconda3\lib\site-packages\ipykernel__init__.py", line 2, in from .connect import File "C:\Users\BRB\anaconda3\lib\site-packages\ipykernel\connect.py", line 18, in import jupyter_client File "C:\Users\BRB\anaconda3\lib\site-packages\jupyter_client__init__.py", line 4, in from .connect import File "C:\Users\BRB\anaconda3\lib\site-packages\jupyter_client\connect.py", line 21, in import zmq File "C:\Users\BRB\anaconda3\lib\site-packages\zmq__init__.py", line 47, in from zmq import backend File "C:\Users\BRB\anaconda3\lib\site-packages\zmq\backend__init__.py", line 40, in reraise(*exc_info) File "C:\Users\BRB\anaconda3\lib\site-packages\zmq\utils\sixcerpt.py", line 34, in reraise raise value File "C:\Users\BRB\anaconda3\lib\site-packages\zmq\backend__init__.py", line 27, in _ns = select_backend(first) File "C:\Users\BRB\anaconda3\lib\site-packages\zmq\backend\select.py", line 28, in select_backend mod = import(name, fromlist=public_api) File "C:\Users\BRB\anaconda3\lib\site-packages\zmq\backend\cython__init__.py", line 6, in from . import (constants, error, message, context, ImportError: DLL load failed while importing error: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情:

  1. 我首先将 Python3 可执行文件添加到系统路径(违背 Anaconda 的建议)。如果我通过命令行启动 ATOM,这确实有效,但如果我双击 ATOM 图标或 .py 文件,我会收到常见的回溯错误。

这个答案https://discuss.atom.io/t/solved-how-to-use-the-Hydrogen-package/30190说这是 Atom 在旧版本 Atom 上的 macOS 机器上的问题,但此后已得到纠正苹果系统。答案是 4 年前,所以我认为它已经针对 Windows 进行了纠正,但我找不到解决方案。

  1. 这个答案Setting up Hydrogen and Atom with Anaconda管理python安装 说(A)运行:

    conda 激活 myenv python -m ipykernel install --user

(B) 清理路径。

这两件事我都做了。从 PATH 中删除 Python3 可执行文件是一种倒退。现在即使从命令行也无法工作。我也不明白为什么这一开始就更糟糕......

  1. 这个家伙Atom:设置 Hydrogen Launcher for use with Python 3.7 也有同样的问题。但没有解决办法。

有人能指出我正确的方向吗?

我相对较新,所以不希望在这个阶段通过设置多个虚拟环境等来使事情复杂化(我还没有需要,我想要简单的)。

San*_*ndi 1

我广泛使用原子+氢。无论 Python 版本如何,无论使用 Anaconda、Miniconda 还是简单的 Python,它都可以工作。请不要弄乱系统环境 PATH

也许您对哪个 python 可执行文件是哪个感到困惑。或者,Atom.exe 和 Hydrogen 使用相同版本、相同路径的 python 可执行文件吗?

原子之物

我确信 Atom.exe 使用系统范围或虚拟环境中存在的默认 python 版本。如果您在没有虚拟环境的情况下从终端运行 Atom.exe,或者只需双击桌面上的图标,Atom.exe 将使用系统中可用的 python。

但是,如果您从虚拟环境激活的终端/cmd 运行 Atom.exe,则 Atom.exe 将使用虚拟环境中可用的 python。

为什么它很重要?如果您使用 Atom.exe 包,例如python-import-magic,Atom.exe 会要求您提供名为 的 python 包isort。如果您安装isort在名为 的虚拟环境中work,Atom.exe 将始终告诉您isort不可用,除非您从work虚拟环境启动 Atom.exe。

那么,我应该从虚拟环境激活的终端启动 Atom.exe 吗?我认为这不是一个好主意。

氢东西

无论安装了多少个 python 或创建了多少个虚拟环境,Hydrogen 都将使用已安装/注册的 python 可执行文件的内核。例如,我安装了几个Python版本(是的,抱歉我不使用pipenv),它们位于:

  • python37 在 D:\python\python37\python.exe
  • D:\python\python38\python.exe 中的 python38

然后我想将 Hydrogen 与使用 python37 的内核一起使用,我应该使用以下命令安装内核一次

D:\python\python37\python.exe -m ipykernel install --name "python37_something"
Run Code Online (Sandbox Code Playgroud)

或者如果我需要 python38

D:\python\python38\python.exe -m ipykernel install --name "python38_something"
Run Code Online (Sandbox Code Playgroud)

或者我只想使用系统范围内可用的任何 python 安装内核:

python.exe -m ipykernel install --name "python_for_the_win"
Run Code Online (Sandbox Code Playgroud)

之后,安装的内核将出现在 Hydrogen(甚至 Jupyter Notebook/Lab)内核选择中。截图如下。

但是如果我使用虚拟环境怎么办?只需切换到虚拟环境并安装内核即可。例如,如果我想使用work以 Hydrogen 命名的虚拟环境,我应该第一次激活虚拟环境并安装内核一次:

workon work
python -m ipykernel install --name "work_venv"
Run Code Online (Sandbox Code Playgroud)

或者如果您使用的是 conda:

conda activate work
python -m ipykernel install --name "work_env"
Run Code Online (Sandbox Code Playgroud)

虚拟work环境将出现在 Hydrogen 内核选择中。这是我安装的内核作为示例:

在此输入图像描述

重要的是,您应该使用--name参数命名已安装的 ipykernel,然后选择一个更有意义的名称,例如work,flask development或任何您喜欢的名称,但不能是pythonpython3。争论--user取决于您的需求。

为什么我不能使用“python”或“python3”作为内核名称?

如果你坚持要跑:

python -m ipykernel install --name "python"
Run Code Online (Sandbox Code Playgroud)

或者

python -m ipykernel install --name "python3"
Run Code Online (Sandbox Code Playgroud)

甚至是官方 nteract 页面的说明:

python -m ipykernel install
Run Code Online (Sandbox Code Playgroud)

无论是否来自虚拟环境,都会安装内核,但根据虚拟环境或系统 python 路径的不同,内核的位置会有所不同。请看一下我的屏幕截图。

在此输入图像描述

后面的终端没有激活虚拟环境,前面的终端正在使用名为 的虚拟环境work。当我jupyter kernelspec list从两个终端运行时,会列出所有已安装的内核,并且它们的文件路径在两个终端上都是相同的。除了python3,我不知道为什么,但似乎pythonpython3是 s 内核的默认名称ipykernel,并且在安装没有名称的内核时也是如此。

python3如果没有从虚拟环境激活的终端运行atom.exe,您就无法选择从 Atom+Hydrogen 运行哪个。

奖金

您可能会注意到,在我上面的最后一个屏幕截图中,“domainopsy”和“javascript”安装在C:\Users\faruq目录中,似乎是因为我--user安装内核时通过了,而“gym”和“work”则没有。我认为,如果我使用其他用户名登录,则无法访问“domainopsy”和“javascript”。

请原谅我的英文,这篇文章是根据我的经验写的,所以如果我错了,请纠正我。