常规终端和PyCharm终端有什么区别?

3

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

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


我认为PyCharm使用默认的系统终端,因此应该与正常情况相同。请注意,显示代码执行的终端与运行Python代码的“subprocess”实例不同。 - NotAName
抱歉投了关闭票,我看错了。已重新开放。 - timgeb
2个回答

4
在我的计算机上使用的常规终端和在PyCharm中打开新项目时获得的终端之间的区别在于,PyCharm内部的终端仿真器与操作系统进程使用API进行交互。操作系统的shell进程是由PyCharm进程启动和拥有的,而不是由用户直接在操作系统上启动。(有关有时可以互换使用的术语的澄清,请参见终端、控制台、Shell和命令行之间的区别是什么?)。 PyCharm主要是用Java实现(在其他语言中集成一些功能,如CPython中的Python调试器)。终端是Java中的一个插件,与IDE集成。如下面的截图所示:文件>设置>插件>终端

enter image description here

PyCharm中的终端模拟器插件可以集成多个Shell(例如“Windows PowerShell、命令提示符cmd.exe、sh、bash、zsh、csh等等”)。下面的示例展示了在PyCharm终端模拟器插件中打开的多个cmd.exe终端标签页。

enter image description here

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

enter image description here

每个终端进程都是独立的。使用命令提示符会为每个终端进程生成2个进程,一个控制台窗口宿主进程和一个Windows命令处理器进程。但更值得注意的是,您还有一个winpty-agent.exe进程,对应于启动winpty。这就引出了一个问题,winpty是什么,它如何工作
回答如下:

回答最后一个问题需要复杂的操作系统级别的解答,但即使这样也不够,因为您必须针对每种终端(zsh、cmd、bash等)在每种操作系统(Linux、Windows等)上提出并回答相同的问题。PyCharm 终端模拟器插件抽象了这些细节,用户可以假定所选择的操作系统终端功能和属性由 PyCharm 终端模拟器插件保留。通过进入 IDE 并转到 文件 > 设置 > 工具 > 终端,可以在 IDE 内部进行终端的某些配置。

enter image description here

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

不会。因为解释器是可以在终端中启动的进程。因此,这个后面的问题与前面的问题是独立的。


0

您可以在Pycharm中检查/配置使用的shell,方法如下:

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

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


抱歉,什么是shell?我在问关于终端的。 - Moran Reznik
1
@MoranReznik 在这个上下文中,就把这些术语视为相同的。 - timgeb
默认情况下应该是相同的 - 还有哪些其他选项? - Moran Reznik
例如,当我在Windows下使用Pycharm时,我会将shell更改为bash.exe。 - timgeb
默认情况下,在所有其他方面,而不仅仅是shell类型,它是否相同?例如,PATH变量是否相同? - Moran Reznik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接