pip是错误,TypeError:__ call __()只需2个参数(给定1个)

hys*_*ysg 28 pip python-2.7

系统

  • 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
Run Code Online (Sandbox Code Playgroud)

错误

输入命令包含pip.Then

[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)
Run Code Online (Sandbox Code Playgroud)

所以我该怎么做?!

Ped*_*eck 70

我在一个新的virtualenv上遇到了同样的问题,显然这是包装,pip和pyparsing与新的setuptools的版本要求之间的冲突.对我有用的是确定旧的.

pip install setuptools==33.1.1
Run Code Online (Sandbox Code Playgroud)

更新:

正如另一个答案所指出的那样,pip已经修复了这个bug,所以你应该尝试升级它,而不是使用上面的解决方法.

python -m pip install --upgrade --force pip 
Run Code Online (Sandbox Code Playgroud)

  • 适合我.我认为这个答案比被接受的答案要好. (2认同)

Rob*_*erd 28

更新:

请参阅Pedro Werneck在此主题中解决方案,而不是这个.这是解决问题的正确方法.


前言:我不推荐这个!

这似乎有效,但我不知道后果会是什么.这是货物崇拜节目的最佳状态!我只是在这里添加它,以防它可以帮助某人绑定.

我对发生requirements.py错误的文件进行了更改.对于@hysg,这将是这个文件:

/usr/lib/python2.7/site-packages/packaging/requirements.py
Run Code Online (Sandbox Code Playgroud)

在我的OS X上,它在这里:

/Library/Python/2.7/site-packages/packaging/requirements.py
Run Code Online (Sandbox Code Playgroud)

我通过删除对MARKER_EXPR的调用的括号修改了违规行,如下所示:

#MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker")
MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker")
Run Code Online (Sandbox Code Playgroud)

这很有效.

再次,请小心!我不知道自己在做什么,这可能会带来更多弊大于利.


Tim*_*imi 23

这很好用:

python -m pip install --upgrade --force pip 
pip install setuptools==33.1.1
Run Code Online (Sandbox Code Playgroud)

  • 请添加更多描述它的作用以及解决问题的原因. (2认同)

rti*_*dru 11

这对我有用:

pip install setuptools==33.1.1
Run Code Online (Sandbox Code Playgroud)

它将setuptools的评级从35.0.1降级到33.1.1并且安装了1.57的pyparsar!

  • 是的,只需要一行命令并解决问题.我认为这一定是最好的答案. (2认同)

小智 10

使用以下命令升级pip,其中修复了错误:

python -m pip install --upgrade --force pip 
Run Code Online (Sandbox Code Playgroud)

它适用于我(centos 7,python 2.7).

有关更多详细信息:GitHub


小智 10

我应用了修复程序

pip install setuptools == 33.1.1

它解决了OSX 10.10.5(Yosemite)的问题