吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 642|回复: 3
收起左侧

[求助] py脚本在外部环境调试

[复制链接]
jiushidt 发表于 2025-12-15 21:09
有一个程序(无源码,不可控),内部有一个conda环境,程序通过conda调用python脚本,实现的扩展开发。
我现在有自己开发的python脚本,怎么设置debugger,能依赖外部的程序和conda环境进行调试呢?由于conda的启动,是外部程序调用和退出的,我没办法使用附加进行的方式附加到python.exe中。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

炫迈 发表于 2025-12-16 09:50
老哥这个问题我遇到过,说白了就是外部程序调你脚本你没法attach。给你几个骚操作:

第一招最简单,在你脚本开头加这行:
import pdb; pdb.set_trace()
这样程序跑到这会卡住等你输入命令,不过得看外部程序是不是控制台程序,如果是GUI可能会卡住没反应。

第二招用PyCharm远程调试,你装个pydevd-pycharm包,脚本开头加:
import pydevd_pycharm
pydevd_pycharm.settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True)
然后PyCharm开个remote debug server,端口5678,这样脚本一跑就自动连上去。

第三招暴力点,用环境变量控制。在你脚本开头加:
import os
if os.environ.get('DEBUG_MODE') == '1':
import pdb; pdb.set_trace()
然后在外部程序调用前设置环境变量DEBUG_MODE=1,conda环境也能继承这个变量。

第四招用logging大法,把关键变量全打日志,虽然土但是稳。建议用logging模块别用print,不然conda输出重定向可能看不到。

个人推荐第二招PyCharm远程调试,最舒服。不过记得调试完记得删掉那些调试代码,不然线上跑起来会卡住等你attach。老哥要是conda环境隔离太严格,可能得在那个环境里单独装pydevd包。
 楼主| jiushidt 发表于 2025-12-16 11:48
炫迈 发表于 2025-12-16 09:50
老哥这个问题我遇到过,说白了就是外部程序调你脚本你没法attach。给你几个骚操作:

第一招最简单,在你 ...

多谢多谢,我去研习一下
 楼主| jiushidt 发表于 2025-12-17 18:50
本帖最后由 jiushidt 于 2025-12-24 09:48 编辑
炫迈 发表于 2025-12-16 09:50
老哥这个问题我遇到过,说白了就是外部程序调你脚本你没法attach。给你几个骚操作:

第一招最简单,在你 ...

pdb.set_trace()的方式好使,能够正常阻塞。但由于外部程序需要重定向input,所以会造成他外部的崩溃。在我这个场景下,就不合适了。
最后还是选用的log大法,没别的,就是部署简单了。
没使用pydevd,因为是外部的环境,不适合做环境变化了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-12-25 14:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表