如何在Python控制台中运行带有选项的.py文件?

2024-05-16 08:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在python中运行this GitHub project,但我只能使用PyIDE的终端来运行它

根据GitHub存储库中的指南,我从$ python train.py RGCN PPI的开头删除了$符号,并可以在那里运行它。这里$是什么意思?我如何在Python控制台中运行这样的文件(例如在>>>符号之后)


Tags: 文件pygithubproject终端指南符号train
1条回答
网友
1楼 · 发布于 2024-05-16 08:42:07

“$”不是Python语法的一部分,它是表示命令提示符的文档中的一个可视提示

To answer the question from the title of this post, I'll provide some instructions first on how to load scripts into the Python console. However, for your specific case, you don't need this. Scroll down to the part about debugging in PyCharm.

有两种方法可以让脚本进入控制台。一种是使用我在下面给出的两行代码的正确版本加载它,或者您可以将它作为一个模块加载—即使它不是一个模块

通常,要在Python2上的Python shell中执行脚本,可以执行以下操作

>>> execfile(r"<path to script here>")

在Python 3上,它更详细:

>>> exec(open(r"<path to script here>").read())

这样做的效果就像您将脚本剪切粘贴到控制台中一样。控制台的全局作用域将获取文件中最左边缩进的所有函数、类和变量。此外,它可能不会运行if __name__ == '__main__':块。但你可以破解它

如果希望将vars/classes/etc放在控制台的全局范围之外的另一个范围中,那么上述命令还有两个附加参数。第一个是globals的字典,另一个是locals的字典。您只需提供globals参数就可以了——它只是您需要的一个普通字典对象

如果要加载的文件是一个模块,则可以像导入任何其他模块一样导入它,方法是将其主文件夹附加到Python模块搜索路径,并使用import指令。您可以通过这种方式加载脚本,即使它不是预期的模块

>>> import sys
>>> sys.path.append(r'/Users/todd/projects/mymodule_folder')
>>> import mymodule

如果对其进行修改并希望重新加载:

>>> import importlib
>>> importlib.reload(mymodule)

将脚本作为模块加载可以避免污染控制台的全局范围。加载后,只需在脚本函数和变量的名称前面加上模块名。模块名将是不带.py扩展名的文件名

如果脚本需要命令行选项,则可以将这些选项的值硬编码到脚本中,并禁用尝试从CLI获取值的代码行。如果它变得复杂,请考虑在IDE中运行它,如下一节中所描述的。

因此,上面介绍了如何在所需的任何python REPL控制台中运行python脚本

BUT loading your scripts into the Python console may not be at all required for your purposes. You wanted to debug some scripts (train.py, test.py) from this project: https://github.com/microsoft/tf-gnn-samples).

使用PyCharm调试命令行脚本

在许多情况下,编写Python脚本以从OS shell运行,并从用户获取命令行选项。这些类型的脚本可以加载到Python控制台中,但大多数都需要一些小技巧才能运行。但是,如果您只想调试这样一个脚本,那么就不需要修改控制台

PyCharm支持像其他脚本一样按原样运行这些脚本(Eclipse和其他IDE也是如此)。这只是为项目创建运行/调试配置的问题。我刚刚安装了PyCharm并尝试了一下,以便记录细节。简单的任务

只需在PyCharm中打开项目,在编辑器窗格上方的工具栏上,有一个用于编辑配置的菜单选项。单击该按钮打开运行/调试配置对话框,然后单击+添加配置。将出现一个带有预定义模板的小对话框-选择Python作为模板并接受

然后在主对话框中,用train.py(或其他脚本)的路径填写脚本路径:,然后单击复选框,[x]在输出控制台中模拟终端此外,您还可以在参数:文本框中添加命令行选项(我输入了文本:mymodel mytask,只是为了满足脚本对两个参数的需要)。单击底部的确定接受配置并关闭对话框

现在您应该在工具栏上看到一个绿色的bug图标。在脚本的__main__块中设置一个断点,然后单击调试图标开始调试脚本。那就够了

使用PDB调试Python命令行脚本

PDB—Python调试器可以在没有IDE的情况下运行。这是调试任何类型脚本的另一种方法。如果需要命令行参数,请从启动调试器时的操作系统外壳:

$ pdb myscript.py mymodel mytask

这就是启动调试会话的全部内容。PDB需要了解一些基于文本的命令。启动会话后,您可以通过输入l获得当前执行行附近的代码列表。输入help查看命令列表

要单步执行一行,请输入“s”作为步骤,或输入“step”。要设置断点,请输入break <line-number>,或在表达式上设置断点。有关可用命令的参考可在此处找到:https://docs.python.org/2/library/pdb.html。网上也有很多版本的pdb备忘单,只需谷歌“pdb备忘单”并选择一个即可

相关问题 更多 >