Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Dépendance installable via pip mais pas via setup.py install

+2 votes

Je souhaite installer pyduino. Comme la bibliothèque n'est pas encore sur Pypi, je clone le dépôt puis lance python setup.py install (je suis en Python 3.4). Sauf que la dépendance netifaces pose problème :

(pyduino-install) [vincent@vincent pyDuino]$ python setup.py install
[...]

Running netifaces-0.10.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-g8uvjam2/netifaces-0.10.4/egg-dist-tmp-yqwtz3sa
Traceback (most recent call last):
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 152, in save_modules
    yield saved
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 193, in setup_context
    yield
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 237, in run_setup
    DirectorySandbox(setup_dir).run(runner)
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 267, in run
    return func()
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 236, in runner
    _execfile(setup_script, ns)
  File "/home/vincent/.local/share/virtualenvs/pyduino-install/lib/python3.4/site-packages/setuptools/sandbox.py", line 46, in _execfile
    exec(code, globals, locals)
  File "/tmp/easy_install-g8uvjam2/netifaces-0.10.4/setup.py", line 17, in <module>
    def run_tests(self):
AttributeError: 'dict' object has no attribute 'print'

During handling of the above exception, another exception occurred:
[...]
(pyduino-install) [vincent@vincent pyDuino]$ 

Des logs plus complets ici.

Ce qui est étrange, c'est qu'installer netifaces avec pip directement fonctionne :

(pyduino-install) [vincent@vincent pyDuino]$ pip install netifaces
You are using pip version 6.1.1, however version 7.1.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting netifaces
  Using cached netifaces-0.10.4.tar.gz
Installing collected packages: netifaces
  Running setup.py install for netifaces
Successfully installed netifaces-0.10.4
(pyduino-install) [vincent@vincent pyDuino]$

Une fois netifaces installé avec pip, le python setup.py install ne pose pas de souci.

demandé 20-Aou-2015 par Vayel (1,050 points)
reclassée 20-Aou-2015 par Vayel

Qu'est ce qui te fais dire que c'est un problème avec python2 ? Perso je ne vois rien qui l'indique. As tu essayer d'installer netifaces seul avant ?

Autant pour moi. J'ai vu le "print" et en ai tiré des conclusions absurdes. Installer netifaces avec pip avant permet d'installer pyduino sans erreur.

C'est bien un probleme de compatibilité python 3, mais c'est le packaging de la lib qui est en cause (cf réponse)

Oui en effet j'ai vu ta réponse mais ce n'est pas ce qu'il disait (ie: que pip utilisait python2 dans virtualenv). Je demandais juste, avant que tu ne la poste, comment il pouvait penser que c'était un problème lié à python 2/3 alors que rien ne l'indiquais dans les logs qu'il a donné. Je me disais donc qu'il avait peut être mal identifié la source de son problème.

1 Réponse

+2 votes
 
Meilleure réponse

C'est un probleme de packaging de netiface qui doit être fixé par les mainteneurs de cette lib.

https://bitbucket.org/al45tair/netifaces/issues/13/0104-install-is-broken-on-python-3x

J'ai l'impression aussi que dans les deux cas ce n'est pas le même type de package qui est installé :
- dans le premier exemple netiface est construit comme un package sous forme d'egg
- dans le second, pip installe un 'source dist' (.tar.gz)

Les auteurs de netiface fournissent aussi un package dans le nouveau format wheel.

Ce que tu peux tenter : installer wheel avant de faire ton python setupy.py install, avec un peu de chance setuptools préférera le wheel a l'egg lorsqu'il téléchargera la dépendance. En esperant que le wheel n'est pas cassé non plus.

 pip install wheel
 python setup.py install
répondu 20-Aou-2015 par jc (2,704 points)
sélectionné 21-Aou-2015 par Vayel

Merci !

Malheureusement, installer wheel au préalable ne supprime pas l'erreur. Mais ce n'est pas très grave.

...