通过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_requires
而numpy
没有numpy
。但据我所知,无论是否明确添加{{1}}都没有区别。
答案 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 。