加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:41:53 所属栏目:Python 来源:网络整理
导读:Python能够在zip存档中运行代码.这解释了为什么有些代码从熟悉的#!/usr/bin/env python开始,紧接着是原始zip文件的字节. 参见例如 http://sayspy.blogspot.com/2010/03/various-ways-of-distributing-python.html Python还允许用户通过“-m pdb”选项在命令
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 Archives导入模块是一个提出这个问题的提议.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读