常规终端和 PyCharm 终端之间的区别?

Difference between regular terminal and PyCharm terminal?

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

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

您可以 inspect/configure Pycharm 中使用的 shell

设置 → 工具 → 终端 → 应用程序设置 → Shell 路径

默认情况下,这应该是您的标准系统 shell。

What is the difference between the regular terminal on my computer and the terminal I get when I open a new project in PyCharm?

区别在于 Terminal emulator inside PyCharm interfaces with an OS process using an API. The OS shell process is launched and owned by the PyCharm process instead of being launched directly by the user on the OS. (For a disambiguation of the sometimes interchangeable terms, see also What is the difference between Terminal, Console, Shell, and Command Line?).

PyCharm主要是在Java上实现的(集成了其他语言的一些功能,比如CPython中的Python调试器)。 Java 中的 Terminal is a plugin 与 IDE 相结合。如下截图来自File > Settings > Plugins > Terminal.

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

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

每个终端进程都是独立的,使用命令提示符可为每个终端提供 2 个进程 Console Window Host process and one Windows Command Processor process. But more notably you also have a winpty-agent.exe process which corresponds to launching winpty. So this raises the question, what is winpty and how does it work?

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

Will your answer change if it's a Conda interpreter instead of regular Python interpreter?

没有。因为解释器是可以在终端内启动的进程。所以后一个问题与前一个问题无关。