如何在没有控制台窗口的情况下在 Windows 上启动最新的 Jupyter QtConsole
Posted
技术标签:
【中文标题】如何在没有控制台窗口的情况下在 Windows 上启动最新的 Jupyter QtConsole【英文标题】:how to launch recent Jupyter QtConsole on Windows without a console window 【发布时间】:2019-02-17 05:42:12 【问题描述】:This older question 似乎已过时。
过去(基于reading git repos 和the qtconsole issue tracker)您可以在没有控制台窗口运行后台的情况下启动 Jupyter QtConsole:
pythonw -m jupyter qtconsole
但是,在最新版本的 Jupyter 中,这仍会启动后台控制台窗口。
我想知道是否有人知道如何在没有烦人的控制台窗口的情况下启动 QtConsole。我知道您可以通过 Anaconda Navigator 程序执行此操作,但我不想启动一个程序,以便随后启动另一个程序。我希望有一个简单的批处理脚本甚至是 python 脚本,以便我可以使用开始菜单快捷方式启动
直接运行模块也不行:
pythonw -c "from qtconsole.qtconsoleapp import main; main()"
这仍然会启动一个新的控制台窗口,如图所示,所以我真的不知道这是否可以通过某种直接的方式实现,或者 Anaconda Navigator 是否正在使用一些黑魔法来实现这一点
【问题讨论】:
看来“C:\Miniconda3\Scripts\jupyter-qtconsole.exe”是一个控制台应用程序,如果不继承它会自动分配一个控制台,显然它不会继承来自 pythonw.exe。在该目录中查找非控制台版本。如果没有,您将需要一个适配器脚本,该脚本使用隐藏或无窗口控制台运行此命令。 您使用的是哪个版本?我没有看到 Py2.7 win64 + qtconsole 4.4.1 的问题 @ivan_pozdeev Python 3.6 和 Python 3.7 使用 Anaconda 发行版 【参考方案1】:这里有两个问题:
%CONDA_PREFIX%\Scripts\jupyter-qtconsole.exe
标记为控制台可执行文件 (Subsystem
field in PE optional header)
-m ipykernel_launcher <etc>
子进程以 python.exe
启动,即使启动器以 pythonw
启动。
这个我可以追踪到%CONDA_PREFIX%\share\jupyter\kernels\python3\kernel.json
。它使用可执行文件的完整路径,因此不会触发the logic in jupyter_client\manager.py
that replaces certain patterns with sys.executable
。
这两种情况都是 Anaconda 特有的,不会发生在普通 Python 中。因此,向https://github.com/conda-forge/qtconsole-feedstock 提交错误以修复此问题。 p>
这些是解决方法:
对于第一个错误,运行pythonw <Scripts_dir>\jupyter-qtconsole-script.py
,这是 .exe
包装的脚本。
(这是 Anaconda 特有的。常规 Python 使用不同的包装机制。Anaconda 必须修补 setuptools
或其他东西。)
对于第二个,将上述kernel.json
中的完整路径替换为“python
”。当您更新此文件所属的 ipykernel
包时,此更改将被覆盖(可以通过在 %CONDA_PREFIX%\pkgs
中搜索来检查)。
The OP reports that this solution may break other Anaconda packages。我相信那些打破标准流的可用性的假设。虽然它在我的书中也算作一个错误,但它一定是因为 Anaconda 软件包没有使用此设置进行测试。
要创建快捷方式/批处理文件以在 Anaconda Prompt 环境中运行上述命令,请参见例如How to make batch files run in anaconda prompt.
【讨论】:
该页面中的信息要么特定于他们的自定义 winpython 环境,要么完全过时。使用当前的 Anaconda 环境,这不起作用 @VinceW。我认为您将能够在一天左右的时间内获得赏金 :) @VinceW。实际上,在这里:***.com/questions/46305569/… 我已按要求提交了一个错误:github.com/conda-forge/qtconsole-feedstock/issues/15 @ivan_pozdeev,不知道是否值得回答,但我后来发现这可能会破坏其他应用程序。例如,JupyterLab 进入了一个无限的内核重启循环。耶!以上是关于如何在没有控制台窗口的情况下在 Windows 上启动最新的 Jupyter QtConsole的主要内容,如果未能解决你的问题,请参考以下文章
在没有可见命令提示符窗口的情况下在 Windows 上自动启动 websocket 服务器
如何在不脱离控制台的情况下在 Windows 中的 Python 中执行 os.execv()?
如何在没有 Git Bash 或 GUI 的情况下在 Windows 10 上安装 git?