2010-11-11 40 views
4

J'ai un fichier de configuration pip que j'utilise avec virtualenv pour récupérer automatiquement les dépendances de mon application.Gel des exigences de pip, NumPy et SciPy sous OS X

L'application dépend à la fois NumPy et SciPy et en tant que tel mon dossier des exigences de pépin comprend:

numpy==1.5.0 
scipy==0.8.0 

Cependant, lors de l'exécution de cette pip dans une nouvelle virtualenv, l'installation échoue avec l'erreur suivante:

File "/Users/x/virtualenv/deploy/src/scipy/setup.py", line 58, in svn_version 
    from numpy.compat import asstr 
ImportError: No module named numpy.compat 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 

Cela se produit parce que SciPy nécessite l'installation de NumPy avant sa construction. Par conséquent, si je supprime SciPy, puis manuellement ajouter SciPy après (installation de pip scipy), cela fonctionne.

Comment puis-je résoudre ce problème étant donné que pip ne s'installe pas dans un ordre particulier?

Répondre

4

Je ne pense pas que vous le pouvez. Pip et setuptools ne sont pas des outils standard - nous essayons de les soutenir de bonne volonté, mais ils sont fragiles. En particulier, parce que scipy setup.py a besoin de numpy pour fonctionner, il ne peut pas fonctionner en utilisant l'argument install_requires.

1

Je viens de rencontrer exactement le même problème! Heureusement, la dernière version de développement de pip installe les paquets dans le même ordre que celui indiqué dans le fichier des exigences.

I mis à jour avec cette commande (dont il a besoin Mercurial depuis pip est hébergé sur Bitbucket):

pip install hg+https://bitbucket.org/ianb/pip 
+1

Ah j'ai parlé trop tôt. Alors que la version dev de pips télécharge et construit les paquets dans le bon ordre, l'étape de construction de scipy doit être numpy pour être installée en premier (pas seulement construit) donc cela ne résout pas le problème. C'est un pas dans la bonne direction! –