如何调试 pip install <package name>

问题描述 投票:0回答:3

如果我想调试通过“pip install packagename”安装的包 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 安装时适用。

debugging pip installation setup.py pdb
3个回答
2
投票

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 添加断点或使用 PyCharm,如 Igor Yudnikov 的答案中所述。

作为参考,这就是我的 Pycharm 中的样子


0
投票

哦!刚刚找到了解决方案,非常简单。什么是点?这是一个普通的 python 文件,我认为它以某种方式绑定到通过 python 运行,并且在引擎盖下系统会生成类似

的内容
python pip install ...

所以,首先我们需要知道pip在哪里

which pip

/Users/me/PycharmProjects/etlscripts/venv/bin/pip

因此,我们可以转到 Pycharm,创建如下配置

然后你就能够捕获你的异常。干杯。


0
投票

记住你可以(应该)运行 pip 作为

python -m pip
这样你就可以做
python -m pdb -m pip install xxx

© www.soinside.com 2019 - 2024. All rights reserved.