2011-09-22 59 views
2

我试图运行Hadoopy,但我在OS X上得到一个编译错误:Cython&Hadoopy编译错误..有关修复的任何想法?

ImportError: Building module failed: ["CompileError: command 'llvm-gcc-4.2' failed with exit status 1\n" 

我在$PATH/Developer/usr/bin,并正在运行的OS X Lion的10.7最新版本的Xcode。 Cython通过easy_install安装。

全输出:

>>> import pyximport; pyximport.install() 
>>> import hadoopy 
/Users/dolan/.pyxbld/temp.macosx-10.7-intel-2.7/pyrex/hadoopy/_main.c:236:22: error: getdelim.h: No such file or directory 
/Users/dolan/.pyxbld/temp.macosx-10.7-intel-2.7/pyrex/hadoopy/_main.c:236:22: error: getdelim.h: No such file or directory 
/Users/dolan/.pyxbld/temp.macosx-10.7-intel-2.7/pyrex/hadoopy/_main.c: In function ‘__pyx_f_7hadoopy_5_main_11HadoopyTask_read_offset_value_text’: 
/Users/dolan/.pyxbld/temp.macosx-10.7-intel-2.7/pyrex/hadoopy/_main.c:4399: warning: implicit conversion shortens 64-bit value into a 32-bit value 
lipo: can't open input file: /var/folders/8b/n0j5pn_13qn_x8p2v4f848zh0000gn/T//ccC8x2Ex.out (No such file or directory) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Library/Python/2.7/site-packages/hadoopy/__init__.py", line 22, in <module> 
    from _main import run, print_doc_quit 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/pyximport/pyximport.py", line 335, in load_module 
    self.pyxbuild_dir) 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/pyximport/pyximport.py", line 183, in load_module 
    so_path = build_module(name, pyxfilename, pyxbuild_dir) 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/pyximport/pyximport.py", line 167, in build_module 
    reload_support=pyxargs.reload_support) 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/pyximport/pyxbuild.py", line 85, in pyx_to_dll 
    dist.run_commands() 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/Cython/Distutils/build_ext.py", line 135, in run 
    _build_ext.build_ext.run(self) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_ext.py", line 340, in run 
    self.build_extensions() 
    File "/Library/Python/2.7/site-packages/Cython-0.15.1-py2.7-macosx-10.7-intel.egg/Cython/Distutils/build_ext.py", line 143, in build_extensions 
    self.build_extension(ext) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/command/build_ext.py", line 499, in build_extension 
    depends=ext.depends) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/ccompiler.py", line 624, in compile 
    self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/unixccompiler.py", line 180, in _compile 
    raise CompileError, msg 
ImportError: Building module failed: ["CompileError: command 'llvm-gcc-4.2' failed with exit status 1\n" 
+0

@eryksun - 你是一个天才。起初,我认为我应该用Cython做到这一点,但后来才意识到我要用Hadoopy来做到这一点。请发布这个答案,所以我可以接受:) –

回答

4

而不是使用pyximport的,与python setup.py build_ext --inplace建立扩展模块到位(或python setup.py develop安装就地开发,或只是一个普通的通过python setup.py install安装)。对于软件包,您几乎总是希望运行安装程序,这将正确配置编译环境,编译和安装过程。如果你使用用Cython加快你的代码(例如,用于科学计算)


pyximport好您的个人脚本。即使那样,您可能需要引入其他库,并从多个来源构建。在这种情况下,您可以使用pyxbld文件来设置sources和include_dirs。例如,假设您有foo.pyx,那么您可以将构建指令放置在同一目录中的foo.pyxbld中。例如:

#foo.pyxbld 
def make_ext(modname, pyxfilename): 
    from distutils.extension import Extension 
    return Extension(name = modname, 
        sources=[pyxfilename, 'bar.c'], 
        include_dirs=['/myinclude']) 
def make_setup_args(): 
    return dict(script_args=["--compiler=mingw32"]) 

现在使用foo是作为下面简单:

import pyximport 
pyximport.install() 
import foo 

。假定有没有编译错误,它几乎透明的,但延迟的第一次导入模块。后续导入将在家庭/个人资料目录的.pyxbld子目录中查找构建的扩展。

6

对我来说这是一个安装问题,使用下述步骤,我已经固定它的某个时候回来:

+0

这对我帮助很大!仍然在2015年7月,'pip安装hadoopy'失败,但这工作。 – Tommy

+0

同意。点安装没有工作,许多互联网'修复'没有工作。但是这样做。非常感谢! – SummerEla

相关问题