如何调试 pip install <package name>

Sab*_*ser 7 debugging installation pip setup.py pdb

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

    pip install .
Run Code Online (Sandbox Code Playgroud)

但是,一旦我收到 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/
Run Code Online (Sandbox Code Playgroud)

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

Igo*_*kov 0

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

python pip install ...
Run Code Online (Sandbox Code Playgroud)

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

which pip
Run Code Online (Sandbox Code Playgroud)

/Users/me/PycharmProjects/etlscripts/venv/bin/pip
Run Code Online (Sandbox Code Playgroud)

所以,我们可以去 Pycharm,创建配置,比如

Pycharm运行配置

那么你就能够捕获你的异常。干杯。