Debugging 如何调试pip安装<;包装名称>;

Debugging 如何调试pip安装<;包装名称>;,debugging,pip,installation,setup.py,pdb,Debugging,Pip,Installation,Setup.py,Pdb,如果我想调试通过“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 setu

如果我想调试通过“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/
processing/Users/skauser/python ibmdb/IBM_DB/IBM_DB
从命令python setup.py egg_info完成输出:
>/private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip请求构建-_fg8s5a2/setup.py(31)()
->机器位=8*struct.calcsize(“P”)
(Pdb)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/private/var/folders/b6/pmddncpn77550p8_g9kkkx9f40000gp/T/pip req build-_fg8s5a2/setup.py”,第31行,在
机器位=8*struct.calcsize(“P”)
文件“/private/var/folders/b6/pmddncpn77550p8_g9kkkx9f40000gp/T/pip req build-_fg8s5a2/setup.py”,第31行,在
机器位=8*struct.calcsize(“P”)
文件“/Library/anaconda3/lib/python3.7/bdb.py”,第88行,跟踪调度
返回自调度行(帧)
文件“/Library/anaconda3/lib/python3.7/bdb.py”,第113行,调度行
如果自行退出:提出BdbQuit
bdb.bdbguit
----------------------------------------
命令“python setup.py egg_info”失败,在/private/var/folders/b6/pmddncpn77550p8_g9kkx9f40000gp/T/pip req build-\u fg8s5a2中出现错误代码1/

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

哦!刚找到一个解决方案,很简单。什么是皮普?这是一个普通的python文件,我认为它一定会通过python运行,而UndertheHood系统会使

python pip install ...
所以,首先我们需要知道皮普在哪里

which pip

所以,我们可以去Pycharm,创建类似配置的


然后您将能够捕获您的异常。干杯。

Pip是一个python程序。您可以通过
cat$(哪个pip)
看到它的内容。然后可以将其复制到项目目录中的新文件中。例如,以下是对我而言的情况:

文件
mypip.py

#!/home/jozo/d/unfurl/venv/bin/python
# -*- 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看起来像

不适用于我,因为pip再也找不到自己的模块(pip 21.0)
#!/home/jozo/d/unfurl/venv/bin/python
# -*- 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())