【问题标题】:How to debug pip install <package name>如何调试 pip install <package name>
【发布时间】:2019-04-20 03:23:34
【问题描述】:

如果我想调试通过 "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


    【解决方案1】:

    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 中的样子

    【讨论】:

      【解决方案2】:

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

      的东西
      python pip install ...
      

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

      which pip
      

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

      所以,我们可以去 Pycharm,像这样创建配置

      那么您将能够捕获您的异常。干杯。

      【讨论】:

      • 对我不起作用,因为 pip 找不到自己的模块了(pip 21.0)
      猜你喜欢
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2018-10-14
      • 2018-06-24
      • 1970-01-01
      相关资源
      最近更新 更多