看来,如果我在代码中调用 pip.main()
,我的日志记录设置就会重置。
工作示例:
import logging
import pip
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.debug("Test")
# prints 'DEBUG:root:Test'
pip.main(["install", "requests"])
# prints pip output
logging.debug("Test")
# doesn't print anything
有什么办法可以避免这种情况吗?
最佳答案
原来这是一个known issue在 pip module 。
这是因为当创建 pip 时,它并不打算导入到其他程序中,因此没有考虑更改根日志记录配置等考虑因素。
项目维护者建议的解决方法是使用 subprocess
模块调用 pip 本身。他们愿意接受拉取请求来解决此问题,但这需要在项目上进行大量工作。
因此我的代码现在看起来像
import logging
import subprocess
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logging.debug("Test")
# prints 'DEBUG:root:Test'
process = subprocess.Popen(["pip", "install", "requests"],
shell=False,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
process.wait()
# prints pip output
logging.debug("Test")
# prints 'DEBUG:root:Test'
关于python - pip.main() 重置 python 中的日志设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754432/