python - 无法在 mac osx 10.10 上构建 python gevent

标签 python pip gevent

简介: pip install gevent 不起作用。

深入挖掘,我下载了 gevent .tar.gz 并手动运行构建:python setup.py build,得到了同样的错误:

running build
running build_py
running build_ext
building 'gevent.core' extension
clang -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -U__llvm__ -DLIBEV_EMBED=1 -DEV_COMMON= -DEV_CLEANUP_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_PERIODIC_ENABLE=0 -Ibuild/temp.macosx-10.10-x86_64-2.7/libev -Ilibev -I/Users/travisjohnson/.pyenv/versions/2.7.5/include/python2.7 -c gevent/gevent.core.c -o build/temp.macosx-10.10-x86_64-2.7/gevent/gevent.core.o
In file included from gevent/gevent.core.c:313:
In file included from gevent/libev.h:2:
...
29 various compiler warnings
...
29 warnings generated.
clang -bundle -bundle_loader python.exe -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/Users/travisjohnson/.pyenv/versions/2.7.5/lib -U__llvm__ build/temp.macosx-10.10-x86_64-2.7/gevent/gevent.core.o -o build/lib.macosx-10.10-x86_64-2.7/gevent/core.so
ld: file not found: python.exe
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1

我的第一个想法是“它看起来像是在告诉 clang 将 python.exe 链接到某个东西”,最初我认为这是胡说八道(这不是 Windows),但是:https://docs.python.org/devguide/setup.html#unix说 python.exe 是构建后 python 的默认名称(因为不区分大小写),所以现在我不知道。

我已经研究了好几个小时了,没有下一步。 I found something similar (I think) on a different project , 但没有解释原因或修复它的原因,只是它已修复(我检查过我的 xcode 和开发人员工具等是最新的)

我对接下来的步骤完全不知所措,有人能给我指出正确的方向吗?

编辑: 一步一步地深入手动运行构建,我确实得到了这个特定的步骤,而不是通过以下方式出错:

  • 找到 python 二进制文件的位置(不是 pyenv 使用的 shim)
  • 手动运行日志中列出的 clang 命令,但将 python.exe 替换为我的 python 二进制文件的路径,即:/Users/用户名/.pyenv/versions/adid/bin/python2.7

所以它似乎没有获得 python 二进制文件的正确路径?不幸的是,我不知道构建过程的其余部分,所以我不能自己继续下去,而且我不知道如何将此路径更正放入 setup.py 运行的过程中.我在更新到 10.10 之前没有遇到这些问题(可能是其他问题,已经几天了,我做了其他事情),所以我不知道为什么这只是一个新问题。

最佳答案

显然这是我的 virtualenv 管理器的问题:

https://github.com/yyuu/pyenv/issues/273

Unable to install compiled Python modules under pyenv on OS X 10.10 是问题的名称。

编辑: 不,不是。

这是 python 的错误。 python 在 OSX 中进行操作系统版本比较的方式很天真,并且在 10.10 中打破了两位数,然后它会认为你在一个更旧的 OSX 上。这通常会被忽视,除非在安装编译模块时(它用于做出一些决定)。

此处修复:https://bugs.python.org/issue21811

我不记得是 2.7.7 还是 2.7.8 是发布修复的版本(但它是其中之一),但最终结果是你不能在 OSX 10.10 上使用旧版本的 2.7 或更新。如果您遇到这个问题,那么我个人会插入升级使用的 python 版本;)(2.7.11 无论如何都有一些很棒的 ssl 改进)。

关于python - 无法在 mac osx 10.10 上构建 python gevent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27259830/

相关文章:

java - 针对现有 Java API 的 Python API 设计

python - 在 DSM/Synology 上安装 pip

使用 pip install 安装 tensorflow-gpu 时出现 SSL 错误

带有 Gevent 池的 Python 脚本,消耗大量内存,锁定

nginx - 使用gunicorn会引发KeyError wsgi.websocket

python - Gevent greenlet 向父级冒泡异常

python - 根据行值合并 Pandas 数据框

python - 语法错误 : unexpected character after line continuation character in python

python - 如何仅将 dtype bool 列的 Pandas 数据框中的 True 和 False 映射到 'Yes' 和 'No'?

EMR 上的 Python 依赖管理