为什么我不能像Apple说的那样改变系统默认的python?

8 python macos wxpython

在此帮助页面上

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man1/python.1.html

Apple说:

改变默认的PYTHON

运用

       % defaults write com.apple.versioner.python Version 2.5
Run Code Online (Sandbox Code Playgroud)

运行python和pythonw命令时,将使版本2.5成为用户默认值(versioner是所用版本选择软件的内部名称).

这根本行不通!

tppllc-Mac-Pro:~ swirsky$ python --version
Python 2.7
tppllc-Mac-Pro:~ swirsky$ defaults write com.apple.versioner.python Version 2.5
tppllc-Mac-Pro:~ swirsky$ python --version
Python 2.7
Run Code Online (Sandbox Code Playgroud)

并且切换不使32位python成为默认值

64位支持

版本2.6支持64位执行(默认情况下处于启用状态).2.5版仅支持32位执行.

与Python的版本一样,python命令可以在32位和64位执行之间进行选择(当两者都可用时).使用:

       % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes
Run Code Online (Sandbox Code Playgroud)

使用户默认的32位执行(使用 /Library/Preferences/com.apple.versioner.python 将设置系统范围的默认值).VERSIONER_PYTHON_PREFER_32_BIT也可以使用环境变量 (优先于首选项文件):

       % export VERSIONER_PYTHON_PREFER_32_BIT=yes #
Run Code Online (Sandbox Code Playgroud)

像伯恩一样的贝壳或

       % setenv VERSIONER_PYTHON_PREFER_32_BIT yes #
Run Code Online (Sandbox Code Playgroud)

C型贝壳

我在这里下了一个rathole.我正试图让wxpython运行.但它不会在Apple Python 2.7上运行,因为没有64位碳支持,而且可靠性支持尚未在wx中完成.

===更新===

感谢你的帮助!这个谜团已经解决了.令我困惑的一件事是我在我的笔记本电脑(最近的i5 macbook pro)上运行(32位)wxpython没有问题,但它不能在我的桌面上运行(最近的i7 mac pro).

他们都有python 2.7,我认为它是相同的.但事实并非如此!

Mac Pro有x86_64版本

tppllc-Mac-Pro:~ swirsky$ file `which python`
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 3 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386):   Mach-O executable i386
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc7400):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture x86_64): Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

而笔记本电脑没有:

thrilllap-2:thrillscience swirsky$ file `which python`
/Library/Frameworks/Python.framework/Versions/2.7/bin/python: Mach-O universal binary with 2 architectures
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture ppc):    Mach-O executable ppc
/Library/Frameworks/Python.framework/Versions/2.7/bin/python (for architecture i386):   Mach-O executable i386
Run Code Online (Sandbox Code Playgroud)

我将在我的桌面计算机上重新安装没有x86_64版本的那个,因为我还不需要64位支持.

Ned*_*ily 12

defaults write com.apple.versioner.python并且VERSIONER_PYTHON_PREFER_32_BIT是Apple开发的更改,适用/usr/bin/python于OS X 10.6(Python 2.6.1)中提供的Apple .(更新:这也适用于OS X 10.7 Lion.)您可能使用其中一个python.org安装程序安装了Python 2.7.python.org目前有两个2.7安装程序,一个(10.5及以上)包括32位和64位支持.第二个(10.3及以上,包括10.6)仅为32位.据推测,你安装了第一个.要让它以32位模式运行,您可以使用以下arch命令调用它:

$ arch -i386 python2.7
Run Code Online (Sandbox Code Playgroud)

或者,如果您始终要使用32位,则可以使用其他安装程序重新安装2.7.请注意,python.org中的64位安装程序是2.7中的新增功能.不幸的是,它有一些问题,即Tkinter使用它的程序(包括IDLE)在OS X 10.6上失败了.这将在维护更新中得到纠正.如果您在10.6上需要它们,请立即坚持使用32位安装程序.

很可能是命令python现在调用2.7 的原因是python.org安装程序更新了您的登录配置文件,比如.bash_profile将其框架bin目录放在shell搜索上PATH.

$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin: # ...
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ /usr/bin/python
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
$ python
Python 2.7 (r27:82508, Jul  3 2010, 21:12:11) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> ^D
$ python -c 'import sys;print("%x"%sys.maxint)'
7fffffffffffffff
$ arch -x86_64 python -c 'import sys;print("%x"%sys.maxint)'
7fffffffffffffff
$ arch -i386 python -c 'import sys;print("%x"%sys.maxint)'
7fffffff
Run Code Online (Sandbox Code Playgroud)


Yuj*_*uji 3

python我认为OS X 10.6 附带的版本是2.6. 事实上,你的命令行显示它是 2.7,如果我理解正确的话,意味着你通过其他方式安装了 2.7。(也许是 macports、fink 或直接编译。)那些非 Apple 提供的 python 通常不支持 Apple 的版本系统。你能运行以下命令吗?

$ which python
Run Code Online (Sandbox Code Playgroud)

有说吗/usr/bin/python