7

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

我得到了一系列似乎很常见的 Traceback 错误;

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.

我尝试过的事情:

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

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

  1. 这个答案使用 Anaconda 管理 python 安装设置氢和原子 说(A)运行:

    conda activate myenv python -m ipykernel install --user

(B) 清理 PATH。

我确实做了这两件事。从 PATH 中删除 Python3 可执行文件是一个倒退。现在它甚至从命令行也不起作用。我也不明白为什么这首先会很糟糕......

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

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

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

4

1 回答 1

1

我广泛使用 Atom + Hydrogen。它适用于任何 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 会要求您提供一个名为isort. 如果您安装isort在名为 的虚拟环境中work,Atom.exe 将始终告诉您isort不可用,除非您从work虚拟环境中启动 Atom.exe。

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

氢东西

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

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

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

D:\python\python37\python.exe -m ipykernel install --name "python37_something"

或者如果我需要 python38

D:\python\python38\python.exe -m ipykernel install --name "python38_something"

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

python.exe -m ipykernel install --name "python_for_the_win"

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

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

workon work
python -m ipykernel install --name "work_venv"

或者如果您使用的是 conda:

conda activate work
python -m ipykernel install --name "work_env"

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

在此处输入图像描述

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

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

如果你坚持跑:

python -m ipykernel install --name "python"

或者

python -m ipykernel install --name "python3"

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

python -m ipykernel install

无论是否从虚拟环境,都会安装内核,但内核的位置会因虚拟环境或系统 python 路径而异。请看一下我的截图。

在此处输入图像描述

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

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

奖金

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

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

于 2021-10-27T23:51:59.637 回答