【发布时间】:2020-03-26 21:04:30
【问题描述】:
在 PyCharm 中,可以设置在打开新控制台时运行的脚本(通过设置 -> '构建、执行、部署' -> 控制台 -> Python 控制台 -> 启动脚本)。
有没有办法将启动脚本类似地应用到调试器控制台?每次运行代码时,我都会一遍又一遍地导入相同的包。
【问题讨论】:
在 PyCharm 中,可以设置在打开新控制台时运行的脚本(通过设置 -> '构建、执行、部署' -> 控制台 -> Python 控制台 -> 启动脚本)。
有没有办法将启动脚本类似地应用到调试器控制台?每次运行代码时,我都会一遍又一遍地导入相同的包。
【问题讨论】:
当您在 PyCharm 中运行 Python Console 时,它会在 <PYCHARM_PATH>/plugins/python/helpers/pydev/pydevconsole.py 处执行自定义 PyCharm 脚本。
另一方面,当您在调试时运行PyCharm Debug Console 时,它会在<PYCHARM_PATH>/Plugins/python/helpers/pydev/pydevd.py 处执行自定义PyCharm 脚本,并将命令行参数--file 设置为您正在调试的脚本。
您可以根据需要修改pydevd.py 文件 (Apache 2 license),但更简单的方法是创建启动脚本,在其中导入您需要的模块、函数等并导入 ALL在 PyCharm 调试控制台 中。这会将您的所有导入减少到一个。
演练:
让我们创建 2 个文件:
main.py - 我们将调试的主脚本startup.py - 模块、函数或其他我们想要导入的东西。main.py内容:
sentence = 'Hello Debugger'
def replace_spaces_with_hyphens(s):
return s.replace(' ', '-')
replace_spaces_with_hyphens(sentence) # <- PLACE BREAKPOINT!
当断点被命中时,这就是我们在范围内的内容:
如果您总是发现自己导入了一些模块并创建了一些函数,您可以在 startup.py 脚本中定义所有内容并将所有内容导入为 from startup import *。
startup.py:
# Example modules you always find yourself importing.
import random
import time
# Some function you always create because you need it.
def my_imported_function():
print("Imported !")
在 Python 调试器控制台中,使用上面提到的 from startup import *,您会看到范围内的所有模块和函数,都可以使用了。
【讨论】:
您可以创建一个新的调试配置(运行 > 编辑配置)并将其指向您项目中的一个脚本(例如,您 gitignore 称为 debug.py)。然后,当您点击调试时,它会运行该脚本并将您放入控制台。
就个人而言,我更喜欢在嵌入式终端中启动ipython,而不是使用调试控制台。在 linux 上,您可以在 .bashrc 中创建一个 bash 别名,例如 alias debug_myproject=PYTHONSTARTUP=$HOME/myproject/debug.py ipython。然后调用 debug_myproject 将运行该脚本并将您放入 ipython 控制台。
【讨论】: