为什么打印(__ name__)给内置'?

时间:2018-02-28 13:23:05

标签: python pycharm

我正在使用pycharm.2017.1.2。 我用py3环境安装了anaconda2。 在Pycharm中,我使用的是Python3解释器,代码很简单:

print(__name__)

在Pycharm的Python控制台中,它会打印builtins

如果我点击了'运行'按钮,按预期打印main

为什么PyCharm Python控制台会打印builtin而不是main

2 个答案:

答案 0 :(得分:3)

PyCharm Python控制台实际上正在运行一个名为pydevconsole.py的模块(应位于C:\ Program Files \ JetBrains \ PyCharm 2017.1.2 \ helpers \ pydev \ pydevconsole.py)。该模块创建一个解释器并将其设置为builtins模块的属性。

因此,PyCharm控制台上的print(__name__)将显示builtins

在执行期间(单击“运行”时),将调用指定的Python解释器,而不是pydevconsole模块。因此print(__name__)按预期显示__main__

答案 1 :(得分:1)

如果运行环境是远程的,并且未安装IPython,则会发生这种情况。这是PyCharm issue reported here。它发生在2018.2版本中,并且正在进行修复。要解决此问题,只需在远程环境中安装IPython。