首页 > 解决方案 > 普通终端和 PyCharm 终端的区别?

问题描述

我电脑上的常规终端和我在 PyCharm 中打开新项目时得到的终端有什么区别?

如果在新项目中它是 Conda 解释器而不是常规 Python 解释器,你的答案会改变吗?

标签: pythonterminalpycharm

解决方案


我电脑上的常规终端和我在 PyCharm 中打开新项目时得到的终端有什么区别?

不同之处在于 PyCharm 中的终端仿真器使用 API 与 OS 进程接口。OS shell 进程由 PyCharm 进程启动和拥有,而不是由用户在操作系统上直接启动。(有关有时可互换术语的消歧,另请参阅终端、控制台、Shell 和命令行之间的区别是什么?)。

PyCharm 主要在 Java 上实现(集成了其他语言的一些功能,如 CPython 中的 Python 调试器)。终端是与 IDE 集成的Java 插件。如以下屏幕截图所示File > Settings > Plugins > Terminal

在此处输入图像描述

PyCharm 中的终端仿真器插件可以集成多个 shell(例如 “Windows PowerShell、命令提示符 cmd.exe、sh、bash、zsh、csh 等”)。以下示例显示了cmd.exe在 PyCharm 终端模拟器插件中打开的几个终端选项卡。

在此处输入图像描述

在 Windows 上,如果您cmd.exe在 PyCharm 中启动终端后打开任务管理器,您将看到如下一个屏幕截图所示,是cmd.exe由 PyCharm 进程启动的终端。在屏幕截图的底部,还显示了用户在操作系统上启动的本机控制台进程。

在此处输入图像描述

每个终端进程是独立的,使用命令提示符为每个终端提供 2 个进程一个Console Window Host进程和一个Windows Command Processor进程。但更值得注意的是,您还有一个winpty-agent.exe与启动winpty相对应的过程。所以这就提出了一个问题,什么是 winpty 以及它是如何工作的

解决最后一个问题需要复杂的操作系统级别的答案,但这仍然不够,因为您必须针对每种操作系统上的每种不同终端组合(zsh、cmd、bash 等)提出并回答相同的问题(Linux、Windows 等)。PyCharm 终端仿真器插件抽象了这些细节,用户可以假设所选择的操作系统终端功能和属性由 PyCharm 终端仿真器插件保留。通过转到 IDE,可以在 IDE 中对终端进行一些配置File > Settings > Tools > Terminal

在此处输入图像描述

如果它是 Conda 解释器而不是常规 Python 解释器,你的答案会改变吗?

不,因为解释器是可以在终端内启动的进程。所以后一个问题独立于前一个问题。


推荐阅读