2012-01-03 2 views
22

Ceci pourrait être une question de suivi de this one. J'utilise setuptools pour installer un paquet de mine. En tant que dépendance, j'ai listé numpy. J'utilise python2.7 et quand je faisInstallation de numpy en tant que dépendance avec setuptools

python setup.py install 

avec ce fichier setup.py:

from setuptools import setup 

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

je me retrouve avec ce message d'erreur:

ImportError: No module named numpy.distutils 

Que dois-je faire afin d'inclure numpy en tant que dépendance et l'installer sans python-dev installé?


La sortie complète 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 

Répondre

3

Sauf si vous avez accès à une distribution binaire (pré-compilé/intégré) pour numpy, vous devrez avoir les en-têtes de python disponibles comme a besoin d'eux pour construire numpy. C'est pourquoi la plupart des gestionnaires de paquets viennent avec des versions pré-compilées de ces paquets. Par exemple vous pouvez apt-get install python-numpy, lier cela dans votre virtualenv, et quand vous essayez d'installer votre programme avec install_requires=['numpy'] il devrait voir qu'il est déjà installé.

+1

est pas là une façon de dire '' setuptools' de construire numpy' avant de l'installer? Construire et installer 'numpy' sur son propre fonctionne parfaitement ... – Woltan

+0

Je suis désolé, je ne suis pas. A partir de votre sortie collée, ** tente ** de construire numpy. –

+0

Juste, mais je suis capable de construire et d'installer 'numpy' en le téléchargeant moi-même (pas avec' setuptools'). Ce n'est que si j'essaye de le construire et de l'installer avec 'setuptools' qu'il casse. – Woltan

2

Pour installer numpy, setuptools télécharge le package et le compile à partir de la source. Cependant, il y a quelques prérequis pour compiler numpy, vous pouvez le vérifier here.

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

cette erreur indique que au moins vous n'avez pas paquet python-dev installé (si vous utilisez ubuntu/debian).

5

Ceci est un problème connu, suivi sur numpy/numpy #2434. J'ai trouvé une solution de contournement: ajoutez numpy à setup_requires. Avoir à la fois setup_requires et install_requires semble fonctionner correctement avec la version la plus récente de setuptools.

Ainsi, votre setup.py devrait ressembler à quelque chose comme

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

L'ajout de numpy à 'setup_requires' n'était pas suffisant. J'ai également dû exécuter 'python setup.py unstall' deux fois pour installer numpy avec succès, voir aussi http://stackoverflow.com/questions/21605927/why-doesnt-setup-requires-work-properly-for-numpy – asmaier

Questions connexes