安装pyarrow时出现ModuleNotFoundError: No module named 'Cython'错误

8

我正试图在虚拟环境中从requirements.txt安装软件包。然而,当pip安装pyarrow时,它会出现以下错误:

Collecting pyarrow==0.9.0 (from -r requirements.txt (line 41))
  Using cached https://files.pythonhosted.org/packages/be/2d/11751c477e4e7f4bb07ac7584aafabe0d0608c170e4bff67246d695ebdbe/pyarrow-0.9.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-dgdvn2c1/pyarrow/setup.py", line 29, in <module>
        from Cython.Distutils import build_ext as _build_ext
    ModuleNotFoundError: No module named 'Cython'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-dgdvn2c1/pyarrow/  

我使用的是Python 3.6.3和Pip 18.0。

我的尝试:

大多数SO答案都建议检查pythonpip是否指向venv python,而我确定它确实是这样的。

$ which python
/Users/ME/repos/myproject/venv/bin/python
(venv) 

我也尝试通过pip安装cython,但即使这样安装仍然失败,尽管错误信息不同。我该如何解决?
编辑:安装Cython后的堆栈跟踪:
Collecting pyarrow==0.9.0 (from -r requirements.txt (line 41))
  Using cached https://files.pythonhosted.org/packages/be/2d/11751c477e4e7f4bb07ac7584aafabe0d0608c170e4bff67246d695ebdbe/pyarrow-0.9.0.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/setup.py", line 508, in <module>
        url="https://arrow.apache.org/"
      File "/Users/ME/Work/myproject/venv/lib/python3.6/site-packages/setuptools/__init__.py", line 131, in setup
        return distutils.core.setup(**attrs)
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/core.py", line 108, in setup
        _setup_distribution = dist = klass(attrs)
      File "/Users/ME/Work/myproject/venv/lib/python3.6/site-packages/setuptools/dist.py", line 370, in __init__
        k: v for k, v in attrs.items()
      File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/distutils/dist.py", line 281, in __init__
        self.finalize_options()
      File "/Users/ME/Work/myproject/venv/lib/python3.6/site-packages/setuptools/dist.py", line 529, in finalize_options
        ep.load()(self, ep.name, value)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/integration.py", line 23, in version_keyword
        dist.metadata.version = get_version(**value)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/__init__.py", line 135, in get_version
        parsed_version = _do_parse(config)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/__init__.py", line 77, in _do_parse
        parse_result = _call_entrypoint_fn(config, config.parse)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/__init__.py", line 40, in _call_entrypoint_fn
        return fn(config.absolute_root)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/setup.py", line 462, in parse_version
        return version_from_scm(root)
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/__init__.py", line 28, in version_from_scm
        return _version_from_entrypoint(root, "setuptools_scm.parse_scm")
      File "/private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/.eggs/setuptools_scm-3.0.5-py3.6.egg/setuptools_scm/__init__.py", line 44, in _version_from_entrypoint
        for ep in iter_matching_entrypoints(config.absolute_root, entrypoint):
    AttributeError: 'str' object has no attribute 'absolute_root'

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/tj/nzhk3hh12074tfyhtgpkw0zm0000gn/T/pip-install-98s3ff2r/pyarrow/

1
什么是“不同的错误”? - Nils Werner
3
pip install --upgrade cython 是怎么样的呢? - Sraw
@Sraw 成功安装了cython-0.28.4,但是我之前提到的属性错误仍然存在。 - An SO User
2
这是setuptools_scm的一个错误(bug)(https://github.com/pypa/setuptools_scm/issues/281)。尝试升级`setuptools_scm`到`3.0.5`版本:`pip install -U setuptools_scm==3.0.5`。 - Nils Werner
1
@NilsWerner pip install -U setuptools_scm==3.0.5 && pip install --no-cache-dir -r requirements.txt。仍然一样 :( - An SO User
显示剩余4条评论
1个回答

3

这是一个关于pyarrow的已知问题(#2163),但目前没有修复。

需要注意的是,在pypi上没有适用于MacOS的pyarrow 0.9.0 wheel可用。但在随后的0.9.0.post1版本中提供了该版本。

以下内容适用于Python 3.6和MacOS:

pip install pyarrow==0.9.0.post1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接