如何为python安装子进程模块?

Posted

技术标签:

【中文标题】如何为python安装子进程模块?【英文标题】:How to install subprocess module for python? 【发布时间】:2014-11-26 11:12:43 【问题描述】:

pip 在 pypi 网站上找不到这个模块,我也找不到。 请告诉我秘密,如何安装?

我需要该模块通过 subprocess.call 生成新的 shell 进程。我见过很多例子,人们使用import subprocess,但没有人展示它是如何安装的。

错误,我得到了(以防我失去理智并且不明白发生了什么):

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users\Alexander\Desktop\tests-runner>python run.py
Traceback (most recent call last):
  File "run.py", line 165, in <module>
    main()
  File "run.py", line 27, in main
    subprocess.call('py.test')
  File "C:\Python27\lib\subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 710, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 958, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

【问题讨论】:

它是内置的,您不必安装它。你的 python 版本是多少? subprocess 模块是标准库的一部分,它不需要(实际上不能)安装。您收到的错误表明找不到应该作为子进程运行的 executable,而不是 subprocess 模块本身。可能是工作目录问题,$PATH,或者可执行文件不是.exe py.test 是什么类型的文件? Windows 不知道它应该如何执行带有.test 扩展名的文件,因此您至少需要指定一个解释器来执行它。有关git.cmd 的此问题示例,请参阅this question。 试试py.test.exe 名字。 Windows 可能无法添加.exe 后缀,因为它认为文件已经包含它(.test)。这是how Windows search for the executable file 一个更新:只有在 IDEL (Python GUI) 甚至直接在 Windows dos shell 中执行时,我才会看到此错误。如果我在 GIT shell 中作为命令行执行它,它工作正常。 【参考方案1】:

在 Python 2.7 中无需安装此模块。它是一个内置的标准模块。

documentation 表明它已添加到 Python 2.4 版的库中。它已经陪伴我们很长时间了。


您在问题更新中显示的错误只不过是找不到文件错误而已。可能找不到您尝试调用Popen 的可执行文件。

该回溯表明subprocess 已安装并已导入。问题只是对subprocess.call('py.test') 的调用失败了。


为了将来参考,这是您在尝试导入尚未安装的模块时遇到的回溯类型:

>>> 导入 foo 回溯(最近一次通话最后): 文件“”,第 1 行,在 ImportError:没有名为 foo 的模块

【讨论】:

【参考方案2】:

错误文本具有误导性。大多数子进程命令期望 shellcmd 作为字符串列表提交。

在这些情况下,我强烈建议使用 shlex 模块:

    import shlex
    
    shell_cmd = "test.py"
    
    subprocess_cmd = shlex.split(shell_cmd)
    subprocess.call(subprocess_cmd)

或者在这个简单的例子中:

    subprocess.call(["test.py"])

【讨论】:

以上是关于如何为python安装子进程模块?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 python 安装 face_recognition 模块

如何为 python 应用程序安装 Qt 模块

如何为 python 安装 OpenCV

如何为子进程选择一个空闲端口?

如何为多个 Python 版本和平台构建编译模块

如何为控制台安装 NodeBox