Pip - ошибка, TypeError: __call __() принимает ровно 2 аргумента (1 данный)
система
установки
Я устанавливаю 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)
Итак, что мне делать?!
Ответы
Ответ 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...