如何为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安装子进程模块?的主要内容,如果未能解决你的问题,请参考以下文章