2012-01-03 21 views
22

Esto podría ser una pregunta de seguimiento de this.Instalar numpy como dependencia con setuptools

Estoy usando setuptools para instalar un paquete mío. Como dependencia, he enumerado numpy. Estoy usando Python2.7 y cuando lo haga

python setup.py install 

con este setup.py archivo:

from setuptools import setup 

setup(name = "test_pack", install_requires = ["numpy"]) 

termino con este mensaje de error:

ImportError: No module named numpy.distutils 

¿Qué necesito hacer para incluir numpy como una dependencia e instalarlo sin tener python-dev instalado?


La salida completa de python setup.py install:

running install 
running bdist_egg 
running egg_info 
writing requirements to test_pack.egg-info/requires.txt 
writing test_pack.egg-info/PKG-INFO 
writing top-level names to test_pack.egg-info/top_level.txt 
writing dependency_links to test_pack.egg-info/dependency_links.txt 
reading manifest file 'test_pack.egg-info/SOURCES.txt' 
writing manifest file 'test_pack.egg-info/SOURCES.txt' 
installing library code to build/bdist.linux-x86_64/egg 
running install_lib 
creating build/bdist.linux-x86_64/egg 
creating build/bdist.linux-x86_64/egg/test_pack 
copying build/lib/test_pack/__init__.py -> build/bdist.linux-x86_64/egg/test_pack 
copying build/lib/test_pack/mod.py -> build/bdist.linux-x86_64/egg/test_pack 
byte-compiling build/bdist.linux-x86_64/egg/test_pack/__init__.py to __init__.pyc 
byte-compiling build/bdist.linux-x86_64/egg/test_pack/mod.py to mod.pyc 
creating build/bdist.linux-x86_64/egg/EGG-INFO 
copying test_pack.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying test_pack.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying test_pack.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying test_pack.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
copying test_pack.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO 
creating 'dist/test_pack-0.0.0-py2.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it 
removing 'build/bdist.linux-x86_64/egg' (and everything under it) 
Processing test_pack-0.0.0-py2.7.egg 
Copying test_pack-0.0.0-py2.7.egg to /home/woltan/local/lib/python2.7/site-packages 
Adding test-pack 0.0.0 to easy-install.pth file 

Installed /home/woltan/local/lib/python2.7/site-packages/test_pack-0.0.0-py2.7.egg 
Processing dependencies for test-pack==0.0.0 
Searching for numpy 
Reading http://pypi.python.org/simple/numpy/ 
Reading http://numpy.scipy.org 
Reading http://sourceforge.net/project/showfiles.php?group_id=1369&package_id=175103 
Reading http://numeric.scipy.org 
Best match: numpy 1.6.1 
Downloading http://pypi.python.org/packages/source/n/numpy/numpy-1.6.1.zip#md5=462c22b8eb221c78ddd51de98fbb5979 
Processing numpy-1.6.1.zip 
Running numpy-1.6.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-AoFmdV/numpy-1.6.1/egg-dist-tmp-JH1j2R 
non-existing path in 'numpy/distutils': 'site.cfg' 
Could not locate executable g77 
Found executable /opt/solstudio12.2/bin/f77 
gnu: no Fortran 90 compiler found 
gnu: no Fortran 90 compiler found 
Found executable /opt/intel/Compiler/11.1/073/bin/intel64/ifort 
Could not locate executable lf95 
Could not locate executable pgf90 
Could not locate executable pgf77 
Found executable /opt/solstudio12.2/bin/f90 
Found executable /opt/solstudio12.2/bin/f95 
Could not locate executable fort 
_configtest.c:1: warning: conflicting types for built-in function ‘exp’ 
_configtest.o: In function `main': 
/tmp/easy_install-AoFmdV/numpy-1.6.1/_configtest.c:6: undefined reference to `exp' 
collect2: ld returned 1 exit status 
_configtest.c:1: warning: conflicting types for built-in function ‘exp’ 
_configtest.c:1:20: error: Python.h: No such file or directory 
_configtest.o: In function `main': 
/tmp/easy_install-AoFmdV/numpy-1.6.1/_configtest.c:6: undefined reference to `exp' 
collect2: ld returned 1 exit status 
_configtest.c:1:20: error: Python.h: No such file or directory 

Respuesta

3

menos que tenga acceso a una distribución binaria (pre-compilados/incorporado) para numpy, usted tiene que tener las cabeceras pitón disponibles, ya que los necesita para construir numpy. Esta es la razón por la cual la mayoría de los gerentes de paquetes vienen con versiones precompiladas de estos paquetes. Por ejemplo, puede apt-get install python-numpy, vincular eso a su virtualenv, y cuando intente instalar su programa con install_requires=['numpy'] debería ver que ya está instalado.

+1

no hay una manera de decir '' setuptools' para construir numpy' antes de instalarlo? Construir e instalar 'numpy' en sus propios trabajos funciona perfectamente ... – Woltan

+0

Lo siento, no los sigo. De su salida pegada ** está ** intentando construir numpy. –

+0

Correcto, pero puedo construir e instalar 'numpy' descargándolo por mi cuenta (no con' setuptools'). Solo si trato de compilarlo e instalarlo con 'setuptools' se rompe. – Woltan

2

Para instalar numpy setuptools descargará el paquete y lo compilará desde la fuente. Sin embargo, existen algunos requisitos previos para compilar numpy, puede verificarlo here.

_configtest.c:1:20: error: Python.h: No such file or directory 

este error indica que al menos usted no tiene instalado el paquete python-dev (si está utilizando Ubuntu/Debian).

5

Este es un problema conocido, rastreado en numpy/numpy #2434.

Encontré una solución para esto: agregue numpy a setup_requires. Tenerlo en ambos setup_requires y install_requires parece funcionar bien con la versión más reciente de setuptools.

lo tanto, su setup.py debería ser algo como

setup(
    # Your setup specific stuff here 
    setup_requires=["numpy"], # Just numpy here 
    install_requires=["numpy"], # Add any of your other dependencies here 
) 
+0

Agregar numpy a 'setup_requires' no fue suficiente. También tuve que ejecutar 'python setup.py unstall' dos veces para instalar numpy con éxito, ver también http://stackoverflow.com/questions/21605927/why-doesnt-setup-requires-work-properly-for-numpy – asmaier

Cuestiones relacionadas