,debugging,pip,installation,setup.py,pdb"/>

首页 > 解决方案 > 如何调试 pip 安装

问题描述

如果我想调试通过 "pip install packagename" 安装的包包名的 setup.py 文件,有没有办法这样做?我尝试下载源代码,在 setup.py 中添加 set_trace() 并运行:

    pip install .

但是,一旦我得到 pdb() 提示,安装就会失败并出现错误:

processing /Users/skauser/python-ibmdb/IBM_DB/ibm_db
    Complete output from command python setup.py egg_info:
    > /private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip-req-build-_fg8s5a2/setup.py(31)<module>()
    -> machine_bits =  8 * struct.calcsize("P")
    (Pdb)
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip-req-build-_fg8s5a2/setup.py", line 31, in <module>
        machine_bits =  8 * struct.calcsize("P")
      File "/private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip-req-build-_fg8s5a2/setup.py", line 31, in <module>
        machine_bits =  8 * struct.calcsize("P")
      File "/Library/anaconda3/lib/python3.7/bdb.py", line 88, in trace_dispatch
        return self.dispatch_line(frame)
      File "/Library/anaconda3/lib/python3.7/bdb.py", line 113, in dispatch_line
        if self.quitting: raise BdbQuit
    bdb.BdbQuit

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip-req-build-_fg8s5a2/

虽然我可以通过以下方式调试源代码:python setup.py build,但我想调试的行为在通过 pip 安装时适用。

标签: debuggingpipinstallationsetup.pypdb

解决方案


Pip 是一个 Python 程序。你可以看到它的内容cat $(which pip)。然后,您可以将其复制到项目目录中的新文件中。例如,这对我来说是这样的:

文件mypip.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import sys
from pip._internal.cli.main import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

然后,您可以使用 pdb 添加断点或使用Igor Yudnikov 的回答中提到的 PyCharm。

作为参考,这就是它在我的 Pycharm 中的样子 在此处输入图像描述


推荐阅读