跳转到主要内容

运行外部进程的多功能实用函数

项目描述

ProcRunner

PyPI release Conda Version Build status Build status Documentation Status Supported Python versions Code style: black

运行外部进程的多功能实用函数

功能

  • 运行外部进程并等待其完成

  • 不会发生死锁,无论进程的stdout/stderr输出行为如何

  • 返回退出码、stdout、stderr(分别作为字节数组),作为subprocess.CompletedProcess对象

  • 进程可以在自定义环境中运行,无论是修改当前环境还是从头开始创建新环境

  • stdin可以提供给进程

  • 默认情况下会打印 stdout 和 stderr,可以被禁用。

  • stdout 和 stderr 可以传递给任何任意函数进行实时处理(分别,作为 Unicode 字符串)。

  • 可选地强制对进程设置时间限制,如果超过则引发 subprocess.TimeoutExpired 异常。

致谢

本包是用 Cookiecutteraudreyr/cookiecutter-pypackage 项目模板创建的。

历史

2.3.3 (2022-03-23)

  • 允许指定 'preexec_fn' 和 'creationflags' 关键字,这些关键字将被传递给 subprocess 调用。

2.3.2 (2022-01-28)

  • run() 函数现在理解 stdin=subprocess.DEVNULL 用于关闭子进程 stdin,而不是通过现有 stdin 连接,这是当前默认行为。

2.3.1 (2021-10-25)

  • 添加 Python 3.10 支持

2.3.0 (2020-10-29)

  • 添加 Python 3.9 支持,删除 Python 3.5 支持

  • 修复 subprocess 执行中的文件描述符泄漏

2.2.0 (2020-09-07)

  • 现在已弃用使用未命名参数(除了命令列表作为第一个参数)调用 run() 函数。由于在未来的版本中将删除多个参数,未命名参数的使用会导致未来的混淆。请使用明确的键控参数代替(#62)。

  • 已弃用 run() 函数的 debug 参数(#63)。 此参数仅用于调试 NonBlockingStream* 类。这些类将在未来的版本中替换,因此该参数将不再有用。调试信息仍然可以通过标准的日志记录机制获取。

  • 支持 Python 3.5 的最终版本

2.1.0 (2020-09-05)

  • 弃用了返回对象的数组访问(#60)。 在未来的版本中,返回对象将变为 subprocess.CompletedProcess,不再允许基于数组的访问。有关数组元素到属性的转换表,请参阅上述链接的拉取请求。

  • 添加了一个新的参数 'raise_timeout_exception'(#61)。

2.0.0 (2020-06-24)

  • 仅支持 Python 3.5+,已删除对 Python 2.7 的支持

  • 已删除弃用的函数别名 run_process()

  • 修复了 Windows 上的稳定性问题

1.1.0 (2019-11-04)

  • 添加 Python 3.8 支持,删除 Python 3.4 支持

1.0.2 (2019-05-20)

  • 停止环境覆盖变量泄漏到进程环境

1.0.1 (2019-04-16)

  • 对返回对象进行了一些微小的修复(实现相等性,标记为不可哈希)

1.0.0 (2019-03-25)

  • 在参数中支持文件系统路径对象(PEP-519)

  • 将返回对象更改为类似于 Python 3.5+ 中引入的 subprocess.CompletedProcess

0.9.1 (2019-02-22)

  • 让弃用警告指向正确的代码位置

0.9.0 (2018-12-07)

  • 在打印输出时捕获 UnicodeEncodeError。受影响的字符被替换,并记录一次警告。暗示 PYTHONIOENCODING 设置不正确。

0.8.1 (2018-12-04)

  • 修复了一些弃用警告

0.8.0 (2018-10-09)

  • 添加参数 working_directory 以设置子进程的工作目录

0.7.2 (2018-10-05)

  • 官方支持 Python 3.7

0.7.1 (2018-09-03)

  • 接受以数值形式覆盖环境变量。

0.7.0 (2018-05-13)

  • 修复 Unicode。修复无效 UTF-8 输入时的崩溃。

  • 明确指出 stdout/stderr 值作为字节字符串返回。

  • 回调以 UTF-8 Unicode 字符串解码接收数据,未知字符由 ufffd(Unicode 替换字符)替换。同样适用于输出打印。

  • 标记 Windows 上的 stdin 为损坏。

0.6.1 (2018-05-02)

  • 维护版本,添加了一些用于可执行文件解析的测试。

0.6.0 (2018-05-02)

  • 修复了包含点('.')和文件扩展名(如 '.bat')的命令的 Win32 API 可执行文件解析。

0.5.1 (2018-04-27)

  • 修复了 Windows 上 Win32API 依赖项安装。

0.5.0 (2018-04-26)

  • 新增关键字 'win32resolve',仅在 Windows 上生效,默认启用。这会导致 procrunner 调用 Win32 API FindExecutable() 函数尝试查找具有对应名称的非 .exe 文件。这意味着 .bat/.cmd 等 . 文件现在可以运行而无需显式指定它们的扩展名。仅支持 Python 2.7 和 3.5+。

0.4.0 (2018-04-23)

  • Windows 上的 Python 2.7 支持。Python 3 尚不支持 Windows。

0.3.0 (2018-04-17)

  • run_process() 重命名为 run()

  • Python 3 兼容性修复

0.2.0 (2018-03-12)

  • Procrunner 现已兼容 Python 3.3-3.6。

0.1.0 (2018-03-12)

  • 首次发布于 PyPI。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分布

procrunner-2.3.3.tar.gz (23.6 kB 查看哈希值)

上传时间

构建分布

procrunner-2.3.3-py3-none-any.whl (11.4 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面