8

通过 pip 在 CentOS 7 上设置 pyparser 时,我看到以下错误


/usr/bin/python2 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-PMzCYU/pycparser/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-0bpBrX-record/install-record.txt --single-version-externally-managed --compile
Traceback (most recent call last):

File "", line 1, in init.py", line 12, in import setuptools.version File "/usr/lib/python2.7/site-packages/setuptools/version.py", line 1, in import pkg_resources File "/usr/lib/python2.7/site-packages/pkg_resources/init.py", line 72, in import packaging.requirements File "/usr/lib/python2.7/site-packages/packaging/requirements.py", line 59, in MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker") TypeError: call() takes exactly 2 arguments (1 given)

4

3 回答 3

9

这似乎是由在 setuptools 的 v34.0.0 中发布的https://github.com/pypa/setuptools/commit/ff371f18f0076bc63da05334f7e551c1cc29e10d引起的。此提交删除了几个软件包的供应商。看起来这只会影响新的 setuptools 安装。现有的在 34.0.2 上很好

通过对版本进行硬编码来解决:

pip install setuptools==33.1.1

仍在研究如何在安装 >= 34.0.0 后修复 pip 使用情况,

编辑:这是设计使然“Setuptools 在一般情况下不再支持自我升级或安装。” http://setuptools.readthedocs.io/en/latest/history.html#v34-0-0

于 2017-01-25T00:08:42.030 回答
4

注意:在 Macbook Yosmite 上运行 Python 2.7.10,尝试使用 pip 安装 TensorFlow。任何安装或升级“numpy”的尝试,以解决“numpy”版本上的 Tensorflow 依赖问题,都会产生如下错误:

TypeError: __call__() takes exactly 2 arguments (1 given)

我通过 pip 安装了最新的 Tensorflow,它加载了许多包。这打破了点子。所有运行 pip 的尝试都产生了与上面的帖子相同的错误,最后一行是:

TypeError: __call__() takes exactly 2 arguments (1 given)

包括pip install setuptools==33.1.1上面提供的建议。TensorFlow 安装了我的 pip 版本,糟糕的 pyparser 代码,看起来像。请记住,我正在运行 Python 2.7.x..

该解决方案建议pip install setuptool==33.1.1生成相同的错误序列,因为 Python 2.7 解析器已损坏。pip 和 easy_install 也坏了。我什至无法使用get-pip.py. 运行python get-pip.py会产生与上面显示的基本相同的错误序列。真正的最大NFG。

[所以,解决方案...]从其他帖子中找到解决方案:“requirements.py”(一个pyparser prgm?)中有一个错误,可以通过查找代码和编辑文件来修复。在我的 Macbook 上,该文件位于:/Library/Python/2.7/site-packages/packaging

找到名为的python prgm:requirements.py更改第59行:

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

至:

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

我已确认此更改允许pipeasy_install再次运行。此外,在 Linux 上,也可以通过在 Python 中运行来引发错误:

    from pkg_resources import load_entry_point 

在修复requirements.py.

于 2017-02-20T21:43:24.873 回答
0

同样的解决方案对我有用

pip install setuptools==33.1.1 接着sudo pip install -r requirements.txt

于 2017-03-31T12:25:58.977 回答