29 votes

pip est une erreur, TypeError: __call __ () prend exactement 2 arguments (1 donné)

système

  • centos 7.2
  • Python 2.7.5

installer

J'installe le webhook

 pip install webhook
### but hava error,then
yum install python-devel -y
## go on,pip doesn't workding
pip
 

Erreur

Entrez la commande contient pip.Puis

 [root@location src]# pip
Traceback (most recent call last):
File "/usr/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 72, in <module>
import packaging.requirements
File "/usr/lib/python2.7/site-packages/packaging/requirements.py", line 59, in <module>
MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
TypeError: __call__() takes exactly 2 arguments (1 given)
 

Donc qu'est ce que je devrais faire?!

71voto

Pedro Werneck Points 3744

J'ai eu le même problème sur un nouveau virtualenv et apparemment, c'est un conflit entre les exigences de version pour l'empaquetage, le pip et le pyparsing avec les nouveaux setuptools. Ce qui a fonctionné pour moi, c'était d'épingler l'ancien.

 pip install setuptools==33.1.1
 

Mise à jour:

Comme une autre réponse l'a souligné, pip a déjà corrigé le bogue, vous devriez donc essayer de le mettre à niveau au lieu d'utiliser la solution de contournement ci-dessus.

 python -m pip install --upgrade --force pip 
 

27voto

RobotNerd Points 1072

Mise à JOUR:

Veuillez voir la solution plus bas dans ce fil par Pedro Werneck à la place de celui-ci. C'est la bonne façon de résoudre le problème.


Préface: je ne recommande pas cet!

Cela semble fonctionner, mais je n'ai aucune idée de ce que les conséquences pourraient être. C'est le culte du cargo de programmation à son meilleur! Je suis seulement en ajoutant ici au cas où ça peut aider quelqu'un dans une impasse.

J'ai fait des modifications pour le fichier requirements.py où l'erreur s'est produite. Pour @hysg, que serait ce fichier:

/usr/lib/python2.7/site-packages/packaging/requirements.py

Sur moi, sur OS X, c'est par ici:

/Library/Python/2.7/site-packages/packaging/requirements.py

J'ai modifié la ligne incriminée en supprimant les parenthèses pour l'appel à la MARKER_EXPR, comme illustré ci-dessous:

#MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker")

Et ça a fonctionné.

Encore une fois, soyez prudent! Je ne sais pas ce que je fais et ce qui pourrait causer plus de tort que de bien.

23voto

Timi Points 543

cela fonctionne bien :

 python -m pip install --upgrade --force pip 
pip install setuptools==33.1.1
 

11voto

rtindru Points 2095

C'est ce qui a fonctionné pour moi:

 pip install setuptools==33.1.1
 

Il a déclassé les setuptools de 35.0.1 à 33.1.1 et installé 1.5.7!

10voto

LI Bing Points 101

Utilisez la commande suivante pour mettre à niveau pip, qui a corrigé le bogue:

 python -m pip install --upgrade --force pip 
 

Cela a fonctionné pour moi (centos 7, python 2.7).

Pour plus de détails: GitHub

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X