1

我正在尝试使用 cvs2svn 将 CVS 存储库转换为 Git,并按照此页面上的说明进行操作。我到了第 7 步,但运行 git-move-refs.py 时出错:

Traceback (most recent call last):
  File "../../cvs2svn-trunk/contrib/git-move-refs.py", line 23, in ?
    from subprocess import Popen, PIPE, call
ImportError: No module named subprocess

作为参考,这是脚本显示的内容:

usage = 'USAGE: %prog [options]'

import sys
import optparse
from subprocess import Popen, PIPE, call

我不是 Python 专家,但从浏览网页来看,subprocess 是一个标准模块,对吧?我正在使用从 2.6.3 版本的源代码构建的 Python 安装。我缺少什么让这个脚本工作?

4

1 回答 1

2

我猜你的发行版中有一个旧版本(pre-2.4)的 Python /usr/bin/python,而你编译的 Python 2.6 在其他地方(比如/usr/local/bin/python)。你之前的路径上有 Python 2.6 可执行文件/usr/bin,所以当你python从命令行执行时,你会得到 Python 2.6。

但是,查看cvs2svn源代码,git-move-refs.py解释器行被硬编码为

#!/usr/bin/python

而不是#!/usr/bin/env python,这意味着当您运行脚本时,它使用旧的 Python。

作为一种解决方法,通过将脚本传递给 Python 2.6 解释器来运行脚本:

user@host$ python /path/to/cvs2svn/contrib/git-move-refs.py
于 2012-10-12T20:25:10.623 回答