在 Python 中导入失败

Importing in Python failing

我正在按照 this blog post 上的说明从 Mercurial 转换为 Git

当我运行这样的脚本时:

hg-fast-export.sh -r c:\projects\demoapp

然后失败并出现以下错误:

Traceback (most recent call last):
  File "./hg-fast-export.py", line 11, in <module>
    from mercurial import node
ImportError: cannot import name node

我的 hg-fast-export.py 的开头看起来像这样

#!/usr/bin/env python

# Copyright (c) 2007, 2008 Rocco Rutte <pdmef@gmx.net> and others.
# License: MIT <http://www.opensource.org/licenses/mit-license.php>

import sys

# import mercurial libraries from zip:
sys.path.append(r'C:\Program Files (x86)\Mercurial\library.zip')

from mercurial import node
from hg2git import setup_repo,fixup_user,get_branch,get_changeset
from hg2git import load_cache,save_cache,get_git_sha1,set_default_branch,set_origin_name
from optparse import OptionParser
import re
import os

我检查了 library.zip 文件(位于 C:\Program Files (x86)\Mercurial\,它包含以下文件夹结构(除了许多其他 files/folders insize library.zip

library.zip
    |
    ---------mercurial
            |
            ----------node.pyc

我真的很难过。我不知道该怎么办。我已经坚持了两天了。它可能是我忽略的非常简单的东西,但我不知道它是什么。这是缓存问题吗?是设置问题吗?是环境问题吗?

请帮忙,谢谢:)

您几乎可以肯定在路径中的某处有另一个 mercurial 包或模块。由于您使用 sys.path.append() library.zip 文件搜索 last 模块。

您最好的办法是将库 zipfile 添加到 Python 模块搜索路径 start:

sys.path.insert(0, r'C:\Program Files (x86)\Mercurial\library.zip')

如果这是一个包,您是否尝试放置一个 __init__.py 文件?这将确保可以找到您的子目录中的文件。虽然您必须更改一些代码(尤其是在您的导入语句中),但这似乎应该是可行的方法。