无法在mac osx 10.10上构建python gevent

时间:2014-12-02 21:59:30

标签: 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链接到某些东西",最初我认为这是无稽之谈(这不是窗口),但是:https://docs.python.org/devguide/setup.html#unix说python.exe是构建后python的默认名称(因为不区分大小写),所以现在我不知道。

我一直在挖掘这几个小时,并且没有下一步。 I found something similar (I think) on a different project,但没有解释原因或修复原因,只是修复了原因(我已经检查过我的xcode和开发者工具等是最新的)

我完全失去了接下来的步骤,有人能指出我正确的方向吗?

修改 再一步一步地逐步运行构建,我确实得到了这个特定步骤,以避免出错:

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

所以它似乎没有获得python二进制文件的正确路径?不幸的是,我不知道构建过程的其余部分,所以我不能继续自己的工作,而且我不知道如何将此路径修正放入{{1}的过程中}。在更新到10.10之前我没有遇到这些问题(可能是其他的东西,它已经过了几天而我已经完成了其他工作),所以我不知道为什么会这样。只是一个新问题。

1 个答案:

答案 0 :(得分:5)

显然这是我的virtualenv经理的一个问题:

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

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

修改 不,不是。

这是 python 的错误。 python在OSX中进行os版本比较的方式是天真的,并且在10.10中打破了两位数,然后它会认为你是在一个更老的OSX上。除非安装已编译的模块(用于做出某些决定),否则通常不会引起注意。

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

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