关于svn merge:调用子进程时,“系统找不到指定的文件”。在python中打开

关于svn merge:调用子进程时,“系统找不到指定的文件”。在python中打开

“The system cannot find the file specified” when invoking subprocess.Popen in python

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

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

1
2
3
4
5
6
7
8
9
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)\
'

不过,在查看svnmerge.py代码时,我注意到对于python 2.4及更高版本,它遵循的是不同的执行路径。 而不是调用
os.popen4()它使用subprocess.Popen()。 尝试重现该错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
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新手,但是google并没有帮助。 有指针吗?


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

我不知道为什么它对您的同事仍然有效,如果他们运行的是相同的操作系统和版本的Python ... FWIW,它在Mac上给了我相同的错误消息,并且我提供了两种修复方法之一 。


推荐阅读

    linux文件中剪切命令?

    linux文件中剪切命令?,位置,系统,工作,命令,发行,连续,标准,终端,文件,目录,l

    linux存储文件命令?

    linux存储文件命令?,系统,地址,工作,命令,软件,电脑,标准,底部,信息,文件,lin

    linux命令移除文件夹?

    linux命令移除文件夹?,命令,文件夹,通用,不了,数据,名称,档案,系统,文件,目

    在linux文件后加命令?

    在linux文件后加命令?,系统,工作,命令,工具,电脑,基础,管理,情况,第一,简介,L

    linux命令删除文件夹?

    linux命令删除文件夹?,系统,名称,环境,文件夹,不了,命令,文件,数据,档案,目

    linux命令看文件编码?

    linux命令看文件编码?,状态,系统,文件,工具,名称,数据,命令,格式,汉字,以下,L

    linux系统监视器命令?

    linux系统监视器命令?,系统,情况,工具,信息,实时,电脑,平均,报告,管理,分析,

    linux编辑文件的命令?

    linux编辑文件的命令?,系统,地址,工作,状态,命令,电脑,信息,管理,目录,终端,l

    linux查系统版本命令?

    linux查系统版本命令?,系统,信息,地址,名称,设备,命令,版本,电脑,软件,工具,

    linux命令行关掉文件?

    linux命令行关掉文件?,地址,状态,工作,系统,信息,命令,名字,电脑,编辑,文件,l

    linux系统添加命令?

    linux系统添加命令?,系统,密码,工作,简介,术语,地址,命令,文件,目录,用户,Lin

    linux分隔文件命令?

    linux分隔文件命令?,系统,信息,文件,命令,位置,指令,文件夹,目录,前缀,方法,l

    备份用命令linux系统?

    备份用命令linux系统?,系统,信息,设备,数据,软件,认证,命令,文件,备份,目录,L

    调用函数命令linux?

    调用函数命令linux?,系统,管理,网络,通用,统一,观察,地址,代码,设备,地方,怎

    linux改文件权限命令?

    linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,

    linux系统中管道命令?

    linux系统中管道命令?,标准,系统,工作,命令,信息,通讯,管道,流向,连续,工具,L

    linux命令交换文件名?

    linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,

    linux系统命令记不住?

    linux系统命令记不住?,系统,工作,基础,地址,网络,服务,命令,第一,名称,目录,

    linux系统刻盘命令?

    linux系统刻盘命令?,系统,软件,设备,工具,盘中,电脑,数据,官网,信息,网络,请

    linux系统还原的命令?

    linux系统还原的命令?,系统,数据,工具,软件,地址,工作,情况,信息,命令,位置,