在setup.py中将numpy + pandas安装为依赖项

时间:2014-09-09 20:44:43

标签: python numpy pandas setuptools

通过setuptools安装numpy + pandas作为setup.py中的依赖项对我来说不起作用。它不是缺少依赖关系。如果我通过pip install numpy安装numpy,之后python setup.py develop一切正常。如果我理解setuptools文档权限,则首先构建所有包,然后再安装。因此构建numpy,但在构建pandas时未安装。

作为一种解决方法,我向numpy添加了setup_requires。这很好,但显然不是一个非常干净的解决方案。

有没有人知道通过setuptools安装numpy + pandas的干净解决方案(Linux只是很好)?

更新

依赖关系是通过

配置的
install_requires=['numpy','pandas']

无论是明确添加numpy还是添加pandas都没有区别。在这两种情况下都会下载并构建numpy,但是pandas无法构建,因为某些头文件(可能是在numpy的安装步骤中安装,但在构建时没有安装)无法找到。如果我先安装numpy,一切正常。我可以100%重现这一点并独立于我正在进行的项目。

更新2:

这是堆栈跟踪的结束:

  File "/tmp/easy_install-QMa4ce/pandas-0.14.1/temp/easy_install-f6lreI/numpy-1.9.0/numpy/distutils/command/build_src.py", line 153, in run
  File "/tmp/easy_install-QMa4ce/pandas-0.14.1/temp/easy_install-f6lreI/numpy-1.9.0/numpy/distutils/command/build_src.py", line 170, in build_sources
  File "/tmp/easy_install-QMa4ce/pandas-0.14.1/temp/easy_install-f6lreI/numpy-1.9.0/numpy/distutils/command/build_src.py", line 329, in build_extension_sources
  File "/tmp/easy_install-QMa4ce/pandas-0.14.1/temp/easy_install-f6lreI/numpy-1.9.0/numpy/distutils/command/build_src.py", line 386, in generate_sources
  File "numpy/core/setup.py", line 432, in generate_config_h

  File "numpy/core/setup.py", line 42, in check_types
    entry_points={
  File "numpy/core/setup.py", line 293, in check_types

SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.

最后的消息肯定是错误的。如果我在运行pip install numpy之前执行了python setup.py develop,一切正常。在上面的示例中,pandas中只有install_requiresnumpy没有numpy。但据我所知,无论是否明确添加{{1}}都没有区别。

2 个答案:

答案 0 :(得分:7)

请参阅未解决的问题https://github.com/numpy/numpy/issues/2434

这是numpy中的一个已知错误,因为它与setuptools有关。

正如在那里讨论的那样,使用$ pip install -e .而不是$ python setup.py develop - 相同的结果,但避免了这个问题。

答案 1 :(得分:3)

这些应该用install_requires kwarg of setup声明。这是an example project, geopandas, which requires pandas

setup(name='geopandas',
      version=FULLVERSION,
      description='Geographic pandas extensions',
      license='BSD',
      author='Kelsey Jordahl',
      author_email='kjordahl@enthought.com',
      url='http://geopandas.org',
      long_description=LONG_DESCRIPTION,
      packages=['geopandas', 'geopandas.io', 'geopandas.tools'],
      install_requires=[
        'pandas', 'shapely', 'fiona', 'descartes', 'pyproj', 'rtree'],  # here
)

您还可以指定所需的版本,请参阅setuptools docs,因为您通常希望确保版本是最新版本(具有您依赖的功能/错误修复程序) - 此处&#39 ; s how I do that in pep8radius