Подтвердить что ты не робот

Pip - ошибка, TypeError: __call __() принимает ровно 2 аргумента (1 данный)

система

  • centos 7.2
  • Python 2.7.5

установки

Я устанавливаю webhook

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

Ошибка

Введите команду, содержащую pip.Then

[[email protected] 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)

Итак, что мне делать?!

4b9b3361

Ответ 1

Предисловие: я не рекомендую это!

Это, похоже, работает, но я понятия не имею, каковы могут быть последствия. Это профессиональное культовое программирование! Я просто добавляю его здесь, если он может помочь кому-то в привязке.

Я внес изменения в файл requirements.py, где произошла ошибка. Для @hysg это будет этот файл:

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

На мне на OS X, он здесь:

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

Я изменил строку нарушения, удалив круглые скобки для вызова MARKER_EXPR, как показано ниже:

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

И это сработало.

Опять же, , будьте осторожны! Я не знаю, что делаю, и это может нанести больше вреда, чем пользы.

Ответ 2

У меня была такая же проблема на новом виртуальном сервере, и, видимо, это конфликт между требованиями к версии для упаковки, pip и pyparsing с новыми установками setuptools. То, что сработало для меня, было привязать старый.

pip install setuptools==33.1.1

Update:

Как уже указывалось в другом ответе, pip уже исправил ошибку, поэтому вы должны попробовать обновить ее вместо использования обходного пути выше.

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

Ответ 3

это хорошо работает:

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

Ответ 4

Это то, что сработало для меня:

pip install setuptools==33.1.1

Он понизил setuptools от 35.0.1 до 33.1.1 и установил pyparsing 1.5.7!

Ответ 5

Используйте следующую команду для обновления pip, в которой исправлена ​​ошибка:

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

Это сработало для меня (centos 7, python 2.7).

Подробнее: GitHub

Ответ 6

Я применил исправление

pip install setuptools == 33.1.1

и он решил проблему для OSX 10.10.5 (Yosemite)

Ответ 7

Я столкнулся с той же проблемой при попытке установить новую виртуальную машину. Я запускаю python 2.7.11 и нашел две команды, которые позволяют решить проблему с версией setuptools:

Это заставляет аппроксимировать pip, у которого есть исправление ошибки, но не переустанавливает инструменты установки, поэтому я все еще работал на setuptools версии 35.0.1

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

Это устанавливает setuptools в более старую версию.

pip install setuptools==33.1.1

После этого я успешно установил свои требования.

Ответ 8

Это сработало и для меня (centos 7, python 2.7).

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

Ответ 9

На самом деле, у меня была проблема, что ОС/система, которая означает root, а не sudo, была владельцем пакета pip2. Но после выполнения этой команды:

sudo apt-get remove python-pip

Он работал как шарм. Отмечая, конечно, что у меня есть debian распространение.

И затем я использовал то, что предложил Педро:

sudo pip install setuptools==33.1.1

Ответ 10

Ни одна из других команд для удаления/переустановки/принудительного ответа не работала для меня, но в OS X 10.10.5 с системой Python 2.7.10 мне удалось:

pip uninstall packaging pip
easy_install pip # this installed pip 1.4.1
pip install --upgrade pip # and this upgraded to the current pip

и тогда я смог import pkg_resources без проблем.

Нужно действительно научиться прекращать возиться с системой Python...