首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cython和Hadoopy编译错误..有什么好办法吗?

Cython和Hadoopy编译错误..有什么好办法吗?
EN

Stack Overflow用户
提问于 2011-09-22 11:05:38
回答 2查看 2.1K关注 0票数 2

我正在尝试运行Hadoopy,但在OS X上遇到编译错误:

代码语言:javascript
复制
ImportError: Building module failed: ["CompileError: command 'llvm-gcc-4.2' failed with exit status 1\n"

我的$PATH中安装了/Developer/usr/bin,并且在OS 10.7上运行最新版本的XCode。Cython是通过easy_install安装的。

完整输出:

代码语言:javascript
复制
>>> 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"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 14:31:09

不使用pyximport,而是使用python setup.py build_ext --inplace构建扩展模块(或者使用python setup.py develop进行安装以进行就地开发,或者仅通过python setup.py install进行常规安装)。对于包,您几乎总是想要运行安装程序,这将正确配置编译环境、构建和安装过程。

如果你正在使用Cython来加速你的代码(例如用于科学计算),那么pyximport对于你的个人脚本来说是很好的。即使这样,您也可能需要引入其他库,并从多个来源进行构建。在这种情况下,您可以使用pyxbld文件来设置源代码和include_dirs。例如,假设您有foo.pyx,那么您可以将构建指令放在同一目录下的foo.pyxbld中。例如:

代码语言:javascript
复制
#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非常简单,如下所示:

代码语言:javascript
复制
import pyximport
pyximport.install()
import foo

假设没有编译错误,它实际上是透明的,但对于第一次导入模块的延迟。后续导入将在主目录/配置文件目录的.pyxbld子目录中查找构建的扩展。

票数 4
EN

Stack Overflow用户

发布于 2013-11-26 19:07:54

对我来说,这是一个安装问题,我曾经使用下面提到的步骤修复过它:

  • pip安装argparse
  • git克隆argparse hadoopy
  • python setup.py安装
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7509117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档