在Snow Leopard上为Python安装psyco
我在我的Macbook Pro上安装psyco时遇到了一些问题,这台电脑运行的是Snow Leopard系统,使用的是Python 2.6.1。
我尝试用命令强制Python以32位模式运行:
defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
此外,我还尝试了Macport的py26-psyco,虽然看起来安装完成了,但在编译时找不到这个模块。
$ sudo python setup.py install
PROCESSOR = 'ivm'
正在运行安装
正在构建
正在构建Python文件
正在构建扩展
正在构建'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’的第二个参数类型不兼容
在文件c/initialize.h的第49行中包含的文件,
从c/psyco.c的第14行开始:
c/stats.c: 在函数‘psyco_stats_reset’中:
c/stats.c:260: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_dump’中:
c/stats.c:298: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_top’中:
c/stats.c:326: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
在文件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’的第二个参数类型不兼容
在文件c/initialize.h的第49行中包含的文件,
从c/psyco.c的第14行开始:
c/stats.c: 在函数‘psyco_stats_reset’中:
c/stats.c:260: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_dump’中:
c/stats.c:298: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_top’中:
c/stats.c:326: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
在文件c/initialize.h的第75行中包含的文件,
从c/psyco.c的第14行开始:
c/Objects/pstructmember.c: 在函数‘PsycoMember_GetOne’中:
c/Objects/pstructmember.c:16: 警告: 未使用的变量‘w2’
c/psyco.c: 在顶层:
c/psyco.c:1064: 致命错误: 写入-时出错:管道损坏
编译终止。
在文件c/psyco.c的第1行中包含的文件,
c/psyco.h:13:3: 错误: #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 "抱歉,完全不支持非32位平台。"
c/codegen.h:17:3: 错误: #error "您可以尝试使用32位兼容模式编译的Python。"
c/codegen.h:18:3: 错误: #error "请注意,Psyco可能永远不会支持非32位平台,因为它不再积极开发。"
c/codegen.h:19:3: 错误: #error "相反,PyPy团队计划在2006年用一个更灵活、易于重定向的Psyco-for-PyPy替代它。"
c/codegen.h:20:3: 错误: #error "请查看 http://codespeak.net/pypy/ "
c/codegen.h:21: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’的第二个参数类型不兼容
在文件c/initialize.h的第49行中包含的文件,
从c/psyco.c的第14行开始:
c/stats.c: 在函数‘psyco_stats_reset’中:
c/stats.c:260: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_dump’中:
c/stats.c:298: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
c/stats.c: 在函数‘psyco_stats_top’中:
c/stats.c:326: 警告: 传递给‘PyDict_Next’的第二个参数类型不兼容
在文件c/initialize.h的第75行中包含的文件,
从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'失败,退出状态为
4 个回答
为什么要自己编译东西呢,明明有个简单的方法可以解决?
- 先安装 适用于Mac的ActivePython 2.6
- 打开终端,输入
pypm install psyco
我在我的MacBook Pro上也遇到了同样的问题,使用的是OS X 10.7。
我用“sudo python2.5 setup.py install”这个命令成功安装了它。
现在它运行得非常顺利。希望这能帮到其他人。
在编译之前,试试这样做:
先输入这条命令:export ARCHFLAGS="-arch i386"
然后在setup.py文件里,
把这行:
extra_link_args = [ ]
替换成:
extra_link_args = [ '-L/Developer/SDKs/MacOSX10.6.sdk/usr/lib' ]
最后只需要运行这条命令:
python setup.py install
希望这能帮到你!