在雪豹上安装 psyco for python
Posted
技术标签:
【中文标题】在雪豹上安装 psyco for python【英文标题】:Installing psyco for python on Snow Leopard 【发布时间】:2011-04-02 21:43:43 【问题描述】:我在运行 Snow Leopard 和 python 2.6.1 的 Macbook pro 上安装 psyco 时遇到了一些问题。
我一直在尝试使用命令强制 python 在 32 位模式下运行
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
另外,我试过Macport py26-psyco,好像完成了但是编译时找不到模块。
$ sudo python setup.py install 处理器 = 'ivm' 运行安装 运行构建 运行 build_py 运行 build_ext 构建“psyco._psyco”扩展 gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch ppc -arch x86_64 -pipe -DALL_STATIC=1 -Ic/ivm -I/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c c/psyco.c -o build/temp.macosx-10.6-universal-2.6/c/psyco.o 在 c/initialize.h:48 中包含的文件中, 来自 c/psyco.c:14: c/psyfunc.c:在函数“psycofunction_call”中: c/psyfunc.c:801:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:49 包含的文件中, 来自 c/psyco.c:14: c/stats.c:在函数“psyco_stats_reset”中: c/stats.c:260:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_dump”中: c/stats.c:298:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_top”中: c/stats.c:326:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:75 包含的文件中, 来自 c/psyco.c:14: c/Objects/pstructmember.c:在函数“PsycoMember_GetOne”中: c/Objects/pstructmember.c:16:警告:未使用的变量“w2” c/psyco.c:在顶层: c/codegen.c:748:警告:“integer_lshift”已定义但未使用 c/ivm/prolog/insns-igen.i:175:警告:“psyco_insn_assertdepth”已定义但未使用 c/ivm/prolog/insns-igen.i:197:警告:“psyco_insn_dynamicfreq”已定义但未使用 c/codegen.c:66:警告:“cc_from_vsource”已定义但未使用 c/Objects/plongobject.c:20:警告:“PsycoLong_AsDouble”已定义但未使用 c/Objects/plistobject.c:116:警告:“PsycoList_SingletonNew”已定义但未使用 c/codegen.c:在函数“psyco_generic_call”中: c/codegen.c:423:警告:“_arg”可能未在此函数中使用 /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as:汇编程序(/usr/bin/../libexec/gcc/darwin/ppc/as 或 /usr/bin/../local/libexec /gcc/darwin/ppc/as) 架构 ppc 未安装 安装的汇编器是: /usr/bin/../libexec/gcc/darwin/x86_64/as 对于架构 x86_64 /usr/bin/../libexec/gcc/darwin/i386/as 对于架构 i386 在 c/initialize.h:48 中包含的文件中, 来自 c/psyco.c:14: c/psyfunc.c:在函数“psycofunction_call”中: c/psyfunc.c:801:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:49 包含的文件中, 来自 c/psyco.c:14: c/stats.c:在函数“psyco_stats_reset”中: c/stats.c:260:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_dump”中: c/stats.c:298:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_top”中: c/stats.c:326:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:75 包含的文件中, 来自 c/psyco.c:14: c/Objects/pstructmember.c:在函数“PsycoMember_GetOne”中: c/Objects/pstructmember.c:16:警告:未使用的变量“w2” c/psyco.c:在顶层: c/codegen.c:748:警告:“integer_lshift”已定义但未使用 c/ivm/prolog/insns-igen.i:175:警告:“psyco_insn_assertdepth”已定义但未使用 c/ivm/prolog/insns-igen.i:197:警告:“psyco_insn_dynamicfreq”已定义但未使用 c/codegen.c:66:警告:“cc_from_vsource”已定义但未使用 c/Objects/plongobject.c:20:警告:“PsycoLong_AsDouble”已定义但未使用 c/Objects/plistobject.c:116:警告:“PsycoList_SingletonNew”已定义但未使用 c/codegen.c:在函数“psyco_generic_call”中: c/codegen.c:423:警告:“_arg”可能未在此函数中使用 c/psyco.c:在顶层: c/psyco.c:1064: 致命错误: 写入错误 -: Broken pipe 编译终止。 在 c/psyco.c:1 中包含的文件中: c/psyco.h:13:3: error: #error "64 位系统根本不支持。请参阅 psyco.sf.net 上的帮助" 在 c/dispatcher.h:10 包含的文件中, 来自 c/codemanager.h:10, 来自 c/psyco.c:3: c/vcompiler.h:在函数“PsycoObject_New”中: c/vcompiler.h:743:警告:由于数据类型范围有限,比较总是错误的 c/vcompiler.h:在函数“PsycoObject_Resize”中: c/vcompiler.h:757:警告:由于数据类型范围有限,比较总是错误的 在 c/dispatcher.h:12 包含的文件中, 来自 c/codemanager.h:10, 来自 c/psyco.c:3: c/codegen.h:15:3: 错误:#error "------------------------ ------------------" c/codegen.h:16:3: error: #error "抱歉,不支持非 32 位平台。" c/codegen.h:17:3: error: #error "您可以尝试使用 32 位编译的 Python" c/codegen.h:18:3: error: #error "兼容模式。注意 Psyco 可能会 " c/codegen.h:19:3: error: #error "从不支持非 32 位平台,因为它不支持 " c/codegen.h:20:3: error: #error "长期积极开发。取而代之的是 PyPy 组" c/codegen.h:21:3: error: #error "计划用更灵活、更容易替换它" c/codegen.h:22:3: error: #error "2006 年可重新定位 Psyco-for-PyPy。" c/codegen.h:23:3: 错误:#error "见http://codespeak.net/pypy/" c/codegen.h:24:3: 错误:#error "------------------------------------ ------------------" 在 c/ivm/iinitialize.h:12 包含的文件中, 来自 c/initialize.h:42, 来自 c/psyco.c:14: c/ivm/idispatcher.c:在函数“psyco_unify”中: c/ivm/idispatcher.c:202:警告:由于数据类型范围有限,比较总是错误的 在 c/initialize.h:46 包含的文件中, 来自 c/psyco.c:14: c/dispatcher.c:在函数“fz_internal_copy”中: c/dispatcher.c:131:警告:由于数据类型范围有限,比较总是错误的 c/dispatcher.c:在函数“fz_compress”中: c/dispatcher.c:233:警告:从指针转换为不同大小的整数 c/dispatcher.c:239:警告:从不同大小的整数转换为指针 在 c/initialize.h:48 中包含的文件中, 来自 c/psyco.c:14: c/psyfunc.c:在函数“psycofunction_call”中: c/psyfunc.c:801:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:49 包含的文件中, 来自 c/psyco.c:14: c/stats.c:在函数“psyco_stats_reset”中: c/stats.c:260:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_dump”中: c/stats.c:298:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 c/stats.c:在函数“psyco_stats_top”中: c/stats.c:326:警告:从不兼容的指针类型传递“PyDict_Next”的参数 2 在 c/initialize.h:53 包含的文件中, 来自 c/psyco.c:14: c/codemanager.c:在函数“psyco_shrink_code_buffer”中: c/codemanager.c:235:警告:格式“%d”需要类型“int”,但参数 3 的类型为“long int” 在 c/initialize.h:60 包含的文件中, 来自 c/psyco.c:14: c/Objects/pobject.c:在函数“getdictoffset”中: c/Objects/pobject.c:257:错误:“SIZE_OF_LONG_BITS”未声明(在此函数中首次使用) c/Objects/pobject.c:257:错误:(每个未声明的标识符只报告一次 c/Objects/pobject.c:257:错误:对于它出现的每个函数。) 在 c/initialize.h:61 包含的文件中, 来自 c/psyco.c:14: c/Objects/pabstract.c:723:3:错误:#error“此处省略 Python 2.3 中的代码” 在 c/initialize.h:75 包含的文件中, 来自 c/psyco.c:14: c/Objects/pstructmember.c:在函数“PsycoMember_GetOne”中: c/Objects/pstructmember.c:16:警告:未使用的变量“w2” lipo:无法打开输入文件:/var/tmp//ccjHgyCU.out(没有这样的文件或目录) 错误:命令“gcc-4.2”失败,退出状态
【问题讨论】:
【参考方案1】:在编译之前尝试这样做: 出口 ARCHFLAGS="-arch i386" 然后在 setup.py 中
替换 extra_link_args = [ ] 和 extra_link_args = [ '-L/Developer/SDKs/MacOSX10.6.sdk/usr/lib' ]
然后运行: python setup.py 安装
希望这会有所帮助!
【讨论】:
【参考方案2】:我在使用 OS X 10.7 的 MacBook Pro 上遇到了同样的问题。
我能够使用“sudo python2.5 setup.py install”编译它
不是它像魅力一样起作用。希望这对其他人有帮助。
【讨论】:
【参考方案3】:我没有您的问题的答案,但作为替代方案,您是否尝试从源安装,详细说明 here 和 here?
此外,您还可以通过在终端中调用命令python2.6-32
来强制使用 32 位 python,这对于测试目的可能会更方便一些。
【讨论】:
【参考方案4】:there is an easy way out时为什么要自己编译?
-
安装ActivePython 2.6 for Mac
打开终端并输入
pypm install psyco
【讨论】:
以上是关于在雪豹上安装 psyco for python的主要内容,如果未能解决你的问题,请参考以下文章