pip 安装 M2Crypto 失败

pip install M2Crypto failing

在 Fedora 21 上安装 M2Crypto 时出现以下错误:

Installed /home/subho/.virtualenvs/shumgrepper/lib/python2.7/site-packages/shumgrepper-0.0.1-py2.7.egg Processing dependencies for shumgrepper==0.0.1 Searching for M2Crypto Reading https://pypi.python.org/simple/M2Crypto/ Best match: M2Crypto 0.22.3 Downloading https://pypi.python.org/packages/source/M/M2Crypto/M2Crypto-0.22.3.tar.gz#md5=573f21aaac7d5c9549798e72ffcefedd Processing M2Crypto-0.22.3.tar.gz Writing /tmp/easy_install-q3YUXp/M2Crypto-0.22.3/setup.cfg Running M2Crypto-0.22.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-q3YUXp/M2Crypto-0.22.3/egg-dist-tmp-nxDfs1 SWIG/_ssl.i:676: Error: Syntax error in input(1). error: Setup script exited with error: command 'swig' failed with exit status 1 尝试按照 here,here 中的步骤操作。但是最新版本的 pip 清除了未完成的构建。我也尝试从 pypi 下载 M2Crypto 提取它但找不到任何 fedora_setup.sh 文件。

此外,深入研究 M2Crypto 中的 setup.py,我发现以下几行。所以看起来他们已经处理了 fedora OS 所以显然没有单独的 fedora_setup.sh 文件在那里。

# Fedora does hat tricks.
    if platform.linux_distribution()[0] in ['Fedora', 'CentOS']:
        if platform.architecture()[0] == '64bit':
            self.swig_opts.append('-D__x86_64__')
        elif platform.architecture()[0] == '32bit':
            self.swig_opts.append('-D__i386__')

    self.include_dirs += [os.path.join(self.openssl, opensslIncludeDir),
                          os.path.join(os.getcwd(), 'SWIG')]

任何帮助都会很棒。

这是 swig 版本问题。最新版本的 swig 给出了语法错误。我切换到旧版本 (SWIG Version 3.0.2) 来解决这个问题。