当前位置:  开发笔记 > 编程语言 > 正文

"在python中调用subprocess.Popen时,系统无法找到指定的文件"

如何解决《"在python中调用subprocess.Popen时,系统无法找到指定的文件"》经验,为你挑选了1个好方法。

我正在尝试使用svnmerge.py来合并一些文件.它使用python,当我使用它时,我得到一个错误 - "系统找不到指定的文件".工作中的同事运行相同版本的svnmerge.py和python(2.5.2,特别是r252:60911)没有问题.

我找到了这个链接,它描述了我的问题.尝试在那里概述的内容,我确认Python可以找到svn(它在我的路径中):

P:\>python 
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> i,k = os.popen4("svn --version") 
>>> i.close() 
>>> k.readline() 
'svn, version 1.4.2 (r22196)\n' 

但是,看一下svnmerge.py代码,我发现对于python版本2.4及更高版本,它遵循不同的执行路径.它使用subprocess.Popen()而不是调用os.popen4().尝试重现错误:

C:\>python
Python 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> p = subprocess.Popen("svn --version", stdout=subprocess.PIPE, 
>>> close_fds=False, stderr=subprocess.PIPE)
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Python25\lib\subprocess.py", line 594, in __init__
    errread, errwrite)
  File "C:\Python25\lib\subprocess.py", line 816, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
>>>

现在,我已经注释掉了2.4和更高的特定代码,但我想找到一个合适的解决方案.

如果它不明显,我是一个完整的python新手,但谷歌没有帮助.有什么指针吗?



1> dF...:

这是一个错误,请参阅文档subprocess.Popen.要么需要一个"shell=True"选项,要么第一个参数需要是一个序列['svn', '--version'].就像现在一样,Popen正在寻找一个名为"svn --version"的可执行文件,它找不到它.

我不知道为什么它会对你的同事起作用,如果他们运行相同的操作系统和Python版本... FWIW它在mac上给我同样的错误信息,并且我给出了修复它的两种方式之一.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有