gpt4 book ai didi

python - 在打包为 zip 文件的应用程序上从命令行运行 pdb?

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:19 25 4
gpt4 key购买 nike

Python 能够在 zip 存档中运行代码。这解释了为什么一些代码以熟悉的 #!/usr/bin/env python 开头,紧接着是原始 zip 文件的字节。参见例如http://sayspy.blogspot.com/2010/03/various-ways-of-distributing-python.html

Python 还允许用户通过“-m pdb”选项从命令行方便地在几乎任何代码上运行 python 调试器。但是在压缩程序(如流行的 youtube-dl program )上运行它会导致编码错误,如下所示:

$ python -m pdb /usr/bin/youtube-dl -h 
Traceback (most recent call last):
File "/usr/lib/python2.7/pdb.py", line 1314, in main
pdb._runscript(mainpyfile)
File "/usr/lib/python2.7/pdb.py", line 1233, in _runscript
self.run(statement)
File "/usr/lib/python2.7/bdb.py", line 387, in run
exec cmd in globals, locals
File "<string>", line 1, in <module>
File "/usr/bin/youtube-dl", line 2
SyntaxError: Non-ASCII character '\xdb' in file /usr/bin/youtube-dl on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> <string>(1)<module>()
(Pdb)

referenced PEP 263没有谈论 zip,我不确定这个 zip 功能在哪里被正式描述或实现。

所以我的问题是,有没有一种方法可以使它适用于任意 zip 文件,而无需解压缩它并在 zip 内的 __main__.py 上运行 pdb?也许是通过增强 pdb 或对其进行包装?

最佳答案

PEP 273 - 从 Zip 存档导入模块 是一个讨论这个问题的提案。

因此您可以轻松地调试 Zip 存档中的文件作为

python -c 'import pdb, youtube_dl; print youtube_dl; pdb.runcall(youtube_dl.main, ["-h"])' youtube-dl

关于python - 在打包为 zip 文件的应用程序上从命令行运行 pdb?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com