<p>instalación numpy a través del problema de la directiva install_requires (Trac # 1841)</p>

Creado en 20 oct. 2012  ·  39Comentarios  ·  Fuente: numpy/numpy

_Billete original http://projects.scipy.org/numpy/ticket/1841 el 25-05-2011 por el usuario de trac ohe, asignado a unknown._

Hola a todos,

En un virtualenv, con python v2.7.1, no puedo instalar numpy a través de la directiva install_requires de setuptools / distribuir.

from setuptools import setup
setup(...
      install_requires=['numpy'],
      ...)

A python setup.py install me da el siguiente rastreo:

running install
running bdist_egg
running egg_info
writing requirements to UNKNOWN.egg-info/requires.txt
writing UNKNOWN.egg-info/PKG-INFO
writing top-level names to UNKNOWN.egg-info/top_level.txt
writing dependency_links to UNKNOWN.egg-info/dependency_links.txt
reading manifest file 'UNKNOWN.egg-info/SOURCES.txt'
writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.6-intel/egg
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install

creating build/bdist.macosx-10.6-intel
creating build/bdist.macosx-10.6-intel/egg
creating build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/PKG-INFO -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/SOURCES.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/dependency_links.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/requires.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
copying UNKNOWN.egg-info/top_level.txt -> build/bdist.macosx-10.6-intel/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating 'dist/UNKNOWN-0.0.0-py2.7.egg' and adding 'build/bdist.macosx-10.6-intel/egg' to it
removing 'build/bdist.macosx-10.6-intel/egg' (and everything under it)
Processing UNKNOWN-0.0.0-py2.7.egg
Copying UNKNOWN-0.0.0-py2.7.egg to /Users/olivier/tc/karmatest/lib/python2.7/site-packages
Adding UNKNOWN 0.0.0 to easy-install.pth file

Installed /Users/olivier/tc/karmatest/lib/python2.7/site-packages/UNKNOWN-0.0.0-py2.7.egg
Processing dependencies for UNKNOWN==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.0
Downloading http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/numpy-1.6.0.tar.gz/download
Processing download
Running numpy-1.6.0/setup.py -q bdist_egg --dist-dir /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/egg-dist-tmp-Zr2lMr
Running from numpy source directory.Warning: distutils distribution has been initialized, it may be too late to add a subpackage commandWarning: distutils distribution has been initialized, it may be too late to add a subpackage fcompilernon-existing path in '/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils': 'site.cfg'
Warning: distutils distribution has been initialized, it may be too late to add a subpackage distutilsWarning: distutils distribution has been initialized, it may be too late to add a subpackage testingWarning: distutils distribution has been initialized, it may be too late to add a subpackage f2pyWarning: distutils distribution has been initialized, it may be too late to add an extension _sortWarning: distutils distribution has been initialized, it may be too late to add an extension multiarrayWarning: distutils distribution has been initialized, it may be too late to add an extension umathWarning: distutils distribution has been initialized, it may be too late to add an extension scalarmathWarning: distutils distribution has been initialized, it may be too late to add an extension _dotblasWarning: distutils distribution has been initialized, it may be too late to add an extension umath_testsWarning: distutils distribution has been initialized, it may be too late to add an extension multiarray_testsWarning: distutils distribution has been initialized, it may be too late to add a subpackage coreWarning: distutils distribution has been initialized, it may be too late to add an extension _compiled_baseWarning: distutils distribution has been initialized, it may be too late to add a subpackage libWarning: distutils distribution has been initialized, it may be too late to add a subpackage oldnumericWarning: distutils distribution has been initialized, it may be too late to add an extension _capiWarning: distutils distribution has been initialized, it may be too late to add a subpackage numarrayWarning: distutils distribution has been initialized, it may be too late to add an extension fftpack_liteWarning: distutils distribution has been initialized, it may be too late to add a subpackage fftWarning: distutils distribution has been initialized, it may be too late to add an extension lapack_liteWarning: distutils distribution has been initialized, it may be too late to add a subpackage linalgWarning: distutils distribution has been initialized, it may be too late to add an extension mtrandWarning: distutils distribution has been initialized, it may be too late to add a subpackage randomWarning: distutils distribution has been initialized, it may be too late to add a subpackage maWarning: distutils distribution has been initialized, it may be too late to add a subpackage matrixlibWarning: distutils distribution has been initialized, it may be too late to add a subpackage compatWarning: distutils distribution has been initialized, it may be too late to add a subpackage polynomialWarning: distutils distribution has been initialized, it may be too late to add a subpackage docWarning: distutils distribution has been initialized, it may be too late to add a subpackage numpyCould not locate executable f95
Could not locate executable f90
Could not locate executable f77
Could not locate executable xlf90
Could not locate executable xlf
Could not locate executable ifort
Could not locate executable ifc
Could not locate executable g77
Found executable /usr/local/bin/gfortran
_configtest.c:1: warning: conflicting types for built-in function ‘exp’
_configtest.c:1: warning: conflicting types for built-in function ‘exp’
_configtest.c:1:20: error: Python.h: No such file or directory
_configtest.c:1:20: error: Python.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-//ccLgEqLk.out
_configtest.c:1:20: error: Python.h: No such file or directory
_configtest.c:1:20: error: Python.h: No such file or directory
lipo: can't figure out the architecture type of: /var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-//ccLgEqLk.out
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    install_requires=['numpy']
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/install.py", line 76, in run
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/install.py", line 104, in do_egg_install
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 211, in run
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 427, in easy_install
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 478, in install_item
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 519, in process_distribution
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 563, in resolve
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 799, in best_match
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 811, in obtain
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 446, in easy_install
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 476, in install_item
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 655, in install_eggs
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 930, in build_and_install
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py", line 919, in run_setup
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 62, in run_setup
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 105, in run
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/sandbox.py", line 64, in <lambda>
  File "setup.py", line 196, in <module>

  File "setup.py", line 189, in setup_package

  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/core.py", line 186, in setup
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 152, in setup
    dist.run_commands()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/Users/olivier/tc/karmatest/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/bdist_egg.py", line 167, in run
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/egg_info.py", line 8, in run
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/cmd.py", line 326, in run_command
    self.distribution.run_command(command)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 152, in run
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 169, in build_sources
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 328, in build_extension_sources
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/command/build_src.py", line 385, in generate_sources
  File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 410, in generate_config_h

  File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 41, in check_types

  File "/private/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/core/setup.py", line 271, in check_types

SystemError: Cannot compile 'Python.h'. Perhaps you need to install python-dev|python-devel.
/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py:251: RuntimeWarning: Parent module 'numpy.distutils' not found while handling absolute import
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py", line 251, in clean_up_temporary_directory
ImportError: No module named numpy.distutils
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "/var/folders/Iy/Iyse1OVUE38-IcPmyTb65E+++TI/-Tmp-/easy_install-W5KwbN/numpy-1.6.0/numpy/distutils/misc_util.py", line 251, in clean_up_temporary_directory
ImportError: No module named numpy.distutils

No tengo ningún problema para instalar numpy con pip install numpy o easy_install numpy dentro o fuera de cualquier virtualenv.

Sistema operativo: Mac OS 10.6.7

00 - Bug Other

Comentario más útil

Como información para cualquier persona que experimente este problema, con la última versión de setuptools , una solución es agregar NumPy a setup_requires . Todavía lo guardé en install_requires , por lo que mi setup.py ve así:

setup(
...
    setup_requires=["numpy"],
    install_requires=["numpy"],
)

Esto funciona y solo instala NumPy una vez, tanto en Mac OS X como en Linux (no probado en Windows).

En cuanto a por qué no tengo ni idea.

Todos 39 comentarios

_ @ rgommers escribió el

No estoy seguro de cuál es exactamente el problema, pero ¿puede solucionarlo simplemente ejecutando un script de instalación que primero instale numpy y luego su paquete? Confiar en estas características de herramientas de configuración mal documentadas no es una buena idea si puede evitarlo.

Si tuviera que adivinar, diría que llamar a setuptools.setup () por primera vez invoca un montón de magia que arruina algo para numpy.distutils, por lo tanto:

Running from numpy source directory.Warning: distutils distribution has been
initialized, it may be too late to add a subpackage commandWarning: distutils
distribution has been initialized, it may be too late to add a subpackage

Esa advertencia proviene de distutils / misc_util.py.

_trac usuario ijstokes escribió el 2011-06-08_

Acabo de tener este mismo error y para mí parece que es causado por algunos problemas de dependencia. Si vuelvo a intentar easy_install con los otros módulos, funcionan la segunda vez. Mi mejor suposición es que algunas dependencias solo son "visibles" después de que finaliza la sesión de easy_install.

Ian

¿Es posible arreglar esto en algún momento? Esto provoca soluciones en las que no debería haber IHMO. Realmente me gustaría llegar a un punto en el que numpy pueda especificarse en la opción install_requires de setup.py.

Por supuesto, es posible si alguien invierte tiempo para comprender realmente el problema y envía una solución limpia. No es una prioridad para mí personalmente: install_requires debe evitarse en mi humilde opinión (al menos hasta que pip y easy_install dejen de actualizar las dependencias al actualizar un paquete al menos).

¿Puede confirmar que el mismo problema todavía ocurre con distutils / setuptools / pip modernos?

Lo hace.

Enviado desde mi iPad

El 29 de noviembre de 2013, a las 7:22, njsmith [email protected] escribió:

¿Puede confirmar que sigue ocurriendo el mismo problema con los
distutils / setuptools / pip?

-
Responda a este correo electrónico directamente o véalo en
Gi tHubhttps: //github.com/numpy/numpy/issues/2434#issuecomment -29485806
.

Me encontré con este problema, así que puedo confirmar que está ahí. La opción install_requires debe preferirse a tener que escribir un script de instalación personalizado cuando no es realmente necesario.

Sistema operativo: Mac 10.8.3

Golpeando este tema para. Ningún espectáculo se detuvo, pero definitivamente molesto. Especialmente porque no es obvio de ninguna manera que se trate de un error en lugar de un problema de usuario / entorno.

Acabo de intentar reproducir esto instalando pandas (que usa install_requires ) en un virtualenv 2.7 creado como:

$ virtualenv --no-site-packages nonumpy
$ source nonumpy/bin/activate
$ cd $PANDAS_DIR
$ pip install cython # needed for pandas
$ python setup.py install

Si alguien puede dar una manera fácil de reproducir esto, ayudaría.

También tengo este problema en un entorno virtual 2.7. os ubuntu wheezy

@zethraeus, ¿ podría proporcionar un conjunto de comandos para reproducir esto (como en mi comentario anterior)? Es difícil de solucionar si no podemos reproducir el problema.

¡Hola! Lamento que haya tardado tanto, pero aquí hay un reproductor.

Ver: https://gist.github.com/kejbaly2/71517b08536776399198

Gracias por el ejemplo @ kejbaly2 , puedo reproducirlo ahora.

Tener un problema muy similar al intentar usar install_requires y numpy

Así es como puedo reproducir el error en Red Hat 6.5
https://gist.github.com/necrolyte2/530e9b39dcb0259b69d4

Como información para cualquier persona que experimente este problema, con la última versión de setuptools , una solución es agregar NumPy a setup_requires . Todavía lo guardé en install_requires , por lo que mi setup.py ve así:

setup(
...
    setup_requires=["numpy"],
    install_requires=["numpy"],
)

Esto funciona y solo instala NumPy una vez, tanto en Mac OS X como en Linux (no probado en Windows).

En cuanto a por qué no tengo ni idea.

He estado tratando de rastrear un problema similar que puede ocurrir a veces cuando la compilación de Numpy se ejecuta a través de setup_requires=['Numpy'] en Astropy, cuando Astropy se está instalando como setup_requires de otro paquete (Yo llamo a esto 'setupception').

Lo he rastreado hasta este fragmento de código antiguo (pero en principio sigue siendo relevante, ¿al menos un poco?): Https://github.com/numpy/numpy/blob/9fc077332b34a7b2a90126f5ae6cc50d57162db5/numpy/distutils/core.py#L92

En la mayoría de los casos, cuando se ejecuta setup.py de Numpy, introduce una función llamada configuration en los kwargs por numpy.distutils.core.setup . numpy.distutils.core.setup a su vez saca la tecla 'configuration' de los kwargs de configuración, luego configura algunas variables globales "mágicas" en distutils.core , y luego llama a _itself_ de forma recursiva . El propósito de esta llamada recursiva es usar la maquinaria distutils para verificar los argumentos de la línea de comandos en busca de errores / - ayuda.

Luego llama a la función configuration que inicia el proceso de configuración de todos los subpaquetes de Numpy, antes de volver a llamar a la función distutils setup() con todos los paquetes ahora completamente configurados.

Donde todo esto entra en conflicto es que el administrador Configuration ocasionalmente necesita llamar a la utilidad get_distribution para adjuntar cosas al objeto Distribution . La necesidad de esto es discutible. De hecho, aunque hay algunas partes del código en Configuration que piensan que debería poder hacer esto, hay otras partes que piensan que si ya hay una instancia Distribution adjunta a distutils.core._setup_distribution entonces probablemente algo esté mal (por lo tanto, la distribución "distutils se ha inicializado, puede ser demasiado tarde para agregar un subpaquete", advertencias que algunas personas han informado en este hilo).

Para hacer una copia de seguridad un poco y, con suerte, aclarar: cuando se ejecuta la función setup() desde distutils (o setuptools), inicializa un objeto Distribution de los setup() kwargs, y luego asigna el resultando Distribution a la variable global distutils.core._setup_distribution . En ningún momento limpia realmente esta variable porque asume que es la configuración _only_ la que se ejecutará en el intérprete de Python actual. No fue diseñado para setupception. (pip soluciona este y otros problemas similares al instalar varios paquetes instalando cada paquete desde su propio subproceso). Sin embargo, en otros casos, como setup_requires , ya puede haber una instancia Distribution del paquete raíz en distutils.core._setup_distribution . Entonces, cuando la clase Configuration Numpy intenta adjuntar cosas al objeto Distribution para _Numpy mismo_, puede terminar jugando con el Distribution incorrecto en algunos casos. Esto da como resultado una compilación de Numpy destrozada ya que faltan algunos bits.

Hay una serie de posibles soluciones para esto, tanto desde el final de setuptools como desde el final de Numpy. No he decidido cuál sería el mejor enfoque, pero definitivamente todo es un desastre :)

Por lo que vale, una posible solución alternativa desde el final de setuptools sería setuptools.sandbox.run_setup , la función que usa setuptools para lograr setupception, para guardar / restaurar todas las variables globales distutils.core antes / después de ejecutar la configuración guión en cuestión.

Da la casualidad de que creo que la versión actual de setuptools ya puede solucionarlo ocultando el distutils.core (eliminándolo de sys.modules ) antes de llamar al script secundario setup.py. Eso debería cuidar de él. Pero no he comprobado esto dos veces.

Actualización: Confirmado, el problema que describí anteriormente se solucionó (algo por feliz accidente) en setuptools> = 10.0.

@embray ¡ eso es un buen trabajo de detective! (y me duele un poco la cabeza :))

Tienes razón en que easy_install , y por lo tanto get_distribution() supongo, sigue siendo lo suficientemente relevante como para que no deberíamos romperlo.

@rgommers La

@embray suena bien. Si tiene un parche listo y no se revisa dentro de ~ 2 semanas, por favor déme una patada (suavemente)

setup_requires = ["numpy"] no funcionó para mí. Recibí este mensaje de error:

AttributeError: el objeto 'módulo' no tiene el atributo 'get_include'.

Pero ejecutar "python setup.py install" por segunda vez solucionó el problema. Consulte también http://stackoverflow.com/questions/21605927/why-doesnt-setup-requires-work-properly-for-numpy

Me acabo de encontrar con el problema informado por @asmaier.

Por lo que vale, nunca olvidé mis ideas para solucionar este problema, pero ahora mismo he tenido que concentrarme en otras cosas. Si alguien más quiere intentarlo, hice algunas recomendaciones de alto nivel sobre dónde podrían ir a buscar, algunos comentarios desde aquí.

entonces, este problema se debe al hecho de que se está configurando __builtins__.__NUMPY_SETUP__ = True
y cuando instala una dependencia que necesita numpy como dependencia, las herramientas de instalación no restablecen __NUMPY_SETUP__ .
parece que estás intentando establecer __NUMPY_SETUP__ = False aquí
https://github.com/numpy/numpy/blob/055056a3108ab19883e50ac125ab9974823498c7/numpy/distutils/misc_util.py#L2195
pero este código nunca se alcanza, porque el retorno en la línea anterior ...

en realidad, creo que toda la función isbootstrapping está haciendo un mal uso / abuso de __builtins__ aquí, de una manera que se rompe cuando tienes numpy como dependencia, y tienes una dependencia que tiene numpy como dependencia.

@JensTimmerman Sospecho que esto también está relacionado con https://github.com/matplotlib/matplotlib/issues/6928 ,

Cualquier sugerencia sobre la forma correcta de solucionar este problema es bienvenida.

@rgommers ¿Pensamientos?

parece que estás intentando establecer NUMPY_SETUP = False aquí
https://github.com/numpy/numpy/blob/055056a3108ab19883e50ac125ab9974823498c7/numpy/distutils/misc_util.py#L2195
pero este código nunca se alcanza, porque el retorno en la línea anterior ...

Esa función is_bootstrapping no se usa en ningún lugar que parezca, por lo que es irrelevante.

en realidad, creo que toda la función isbootstrapping está haciendo un mal uso / abuso de las incorporaciones aquí, de una manera que se rompe cuando tienes numpy como dependencia, y tienes una dependencia que tiene numpy como dependencia.

El único uso de __builtins__ es en el principal setup.py aquí .

Es feo, pero también es difícil escribirlo de una manera más sólida. Por el momento, supongo que si hay un problema con esto, solo aparecerá por setup_requires='numpy' en algunas circunstancias y no por install_requires . La diferencia entre ellos es que el primero invoca setuptools porque pip aún no sabe cómo manejarlo. Sin embargo, en Scipy usamos setup_requires='numpy' y nunca hemos tenido un problema con esto. Por lo tanto, puede ser eso más el funkiness en los scripts de configuración de matplotlib.

Leyendo de nuevo https://github.com/numpy/numpy/issues/2434#issuecomment -77898051, que parece describir bien la causa del problema, no creo que tenga nada que ver con __NUMPY_SETUP__ .

EDITAR: o tal vez lo haga en algunos casos, pero es difícil lidiar con eso de otra manera. Normalmente no hay problema aquí porque pip arregla para construir / instalar cosas de una manera que está bien aislada.

No debería ser demasiado difícil demostrar que esta teoría es correcta o incorrecta, utilizando del builtins.__NUMPY_SETUP__ al final de setup.py .

probé eso en gh-7956

En caso de que la esencia en https://github.com/numpy/numpy/issues/2434#issuecomment -49156521 desaparezca en algún momento, aquí hay una copia de cómo reproducir este problema:

cd /tmp

cat > ./setup.py <<DELIM
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: "Chris Ward" <[email protected]>

from setuptools import setup

default_setup = dict(
    name='numpy_install_test',
    description='https://github.com/numpy/numpy/issues/2434',
    provides=['numpy_install_test'],
    install_requires=['pandas'],
    requires=['pandas'],
    license='GPLv3',
    author='Chris Ward',
    author_email='[email protected]',
)   

setup(**default_setup)

DELIM


virtualenv --no-site-packages ~/virtenvs/nonumpy
source ~/virtenvs/nonumpy/bin/activate
python setup.py install

tener dificultades para instalar pandas en python2.7.16 usando pip install -R requirements.txt

https://files.pythonhosted.org/packages/b2/4c/b6f966ac91c5670ba4ef0b0b5613b5379e3c7abdfad4e7b89a87d73bae13/pandas-0.24.2.tar.gz (11,8 MB)
Salida completa del comando python setup.py egg_info:
Rastreo (llamadas recientes más última):
Archivo "", línea 1, en
Archivo "/tmp/pip-install-WznqHc/pandas/setup.py", línea 746, en
setuptools_kwargs)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", línea 144, en configuración_install_setup_requires (atributos)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/__init__.py", línea 139, en _install_setup_requiresdist.fetch_build_eggs (dist.setup_requires)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", línea 724, en fetch_build_eggsreplace_conflicting = Verdadero,Archivo "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", línea 782, en resoluciónreplace_conflicting = replace_conflictingArchivo "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", línea 1065, en best_matchreturn self.obtain (req, instalador)Archivo "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", línea 1077, en la obtencióninstalador de devolución (requisito)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/dist.py", línea 791, en fetch_build_eggvolver cmd.easy_install (req)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", línea 679, en easy_installreturn self.install_item (spec, dist.location, tmpdir, deps)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", línea 705, en install_itemdists = self.install_eggs (especificación, descarga, tmpdir)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", línea 890, en install_eggsreturn self.build_and_install (setup_script, setup_base)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", línea 1158, en build_and_installself.run_setup (setup_script, setup_base, args)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/command/easy_install.py", línea 1144, en run_setuprun_setup (setup_script, args)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 253, en run_setupaumentoArchivo "/usr/local/lib/python2.7/contextlib.py", línea 35, en __exit__self.gen.throw (tipo, valor, rastreo)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 195, en setup_contextrendimientoArchivo "/usr/local/lib/python2.7/contextlib.py", línea 35, en __exit__self.gen.throw (tipo, valor, rastreo)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 166, en save_modulesSaved_exc.resume ()Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 141, en currículumsix.reraise (tipo, exc, self._tb)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 154, en save_modulesrendimiento ahorradoArchivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 195, en setup_contextrendimientoArchivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 250, en run_setup_execfile (setup_script, ns)Archivo "/usr/local/lib/python2.7/site-packages/setuptools/sandbox.py", línea 45, en _execfileexec (código, globales, locales)** Archivo "/tmp/easy_install-2M8B7z/numpy-1.17.0rc1/setup.py", línea 31, en

**RuntimeError: Python version >= 3.5 required.**

No estoy seguro de por qué busca numpy-1.17.0rc1 que no es compatible con python2

Cualquier ayuda será apreciada, gracias

Comparta su requirements.txt

El archivo de requisitos contiene:

matraz == 1.0.2
frasco-jwt == 0.3.2
flask-script == 2.0.6
frasco-scrypt == 0.1.3.6
PyJWT <1.5.0
intermitente == 1.4
números de teléfono == 8.9.12
flanker == 0.9.0
bugsnag == 3.4.3
encurtidob == 0.7.2
solicitudes == 2.19.1
python-dateutil == 2.8.0
gunicorn == 19.9.0
gevent == 1.3.6
webargs == 4.0.0
capa == 3.10
bson == 0.5.7
apio == 4.2.1
redis == 3.2.1
contratado
numpy == 1.16.4

Finalmente, adminístrelo para que funcione manteniendo el archivo de requisitos interno numpy y luego instalando pandas

Ejecute el comando en la ventana acoplable:

EJECUTAR la instalación de pip https://github.com/pydata/pandas/releases/download/v0.24.2/pandas-0.24.2.tar.gz

Sin embargo, ahora hay otro problema en la compilación, dice que necesita instalar cython para compilar pandas.

Error:

Excepción: no se encuentra el archivo generado por Cython 'pandas / io / sas / sas.c'.
Se requiere Cython para compilar pandas desde una rama de desarrollo.
Instale Cython o descargue un paquete de lanzamiento de pandas.

¿Alguna idea?

No relacionado con este problema que se refiere al uso de install_requires dentro de setup.py . Abra una nueva edición. ¿Realmente necesitas instalar pandas desde la fuente? ¿Por qué no pip install pandas==0.24.2 ?

Sí, abriré este problema en la biblioteca de pandas. Sin embargo, la publicación que mencioné anteriormente está relacionada con numPy, ya que no puede instalar pandas directamente. NumPy está instalado correctamente en Python2.7 bajo docker env.
¿Por qué no instalar pip pandas == 0.24.2? Porque cuando lo ejecuto en la ventana acoplable, dice.

Excepción: no se encontró el archivo generado por Cython 'pandas / msgpack.c'.
Se requiere Cython para compilar pandas desde una rama de desarrollo.
Instale Cython o descargue un paquete de lanzamiento de pandas.

Entonces necesito usar la versión de lanzamiento de pandas para instalar desde tarball

Clausura. Creo que el mundo de las pitones se está alejando de setup_requires y más hacia requirements.txt o pyproject.toml . La solución alternativa se encuentra a continuación para aquellos que aún quieren usar setup_requires .

setup(
...
    setup_requires=["numpy"],
    install_requires=["numpy"],
)

En cuanto a @omeryounus tratando de instalar numpy en python2, ese es un problema separado que no está relacionado con este. Algunos usuarios han informado que actualizar pip y setuptools a la versión más reciente ayudó con ese problema.

Vuelva a abrir si hay más para discutir alrededor de setup_requires .

¿Fue útil esta página
0 / 5 - 0 calificaciones